2013-02-13 174 views
0

下面的代碼我想發送matrix1Col和matrix2Col乘法。索引1超出範圍時出錯

但它與索引1超出邊界的錯誤。

double kk[2][2] = {{1,2},{5,6}}; 
double t [2][1] = {1,2};` 

if (!matrix1Col) { 
    matrix1Col = [NSMutableArray array]; 
} 

for (unsigned int i=0; i<2; i++) { 
    matrix1Row = [NSMutableArray new]; 
    for (unsigned int j=0 ; j<2; j++) { 
     [matrix1Row addObject:@(kk[i][j])]; 
    } 
    [matrix1Col addObject:matrix1Row]; 
} 

if (!matrix2Col) { 
    matrix2Col = [NSMutableArray array]; 
} 

for (unsigned int i=0; i<2; i++) { 
    matrix2Row = [NSMutableArray new]; 
    for (unsigned int j=0; j<1; j++) { 
     [matrix2Row addObject:@(t[i][j])]; 
    } 
    [matrix2Col addObject:matrix2Row]; 
} 
NSMutableArray *resultMultiply = [self multiply:matrix1Col :matrix2Col]; 

在ViewController.m另一種方法裏面的UIButton代碼:

這是錯誤代碼:

2013-02-14 06:26:06.595 matrixMutableArray[21578:c07] *** Terminating app due to      uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]' 
*** First throw call stack: 

我找不到它在那裏的錯誤。

感謝您的評論。

+0

錯誤發生在哪裏? – Sebastian 2013-02-14 00:04:15

回答

0

該錯誤發生在該行:

double value2 = [[[matrix2 objectAtIndex:k] objectAtIndex:j] doubleValue]; 

當錯誤發生時K = 0和j = 1。 matrix2的objectAtIndex:0只有一個對象,因此是錯誤。

+0

謝謝你。我已經把它改成0了。但是我想知道爲什麼j = 1,而我把它設置得比matrix2RowCount小,而matrix2RowCount是1; – selfsheariffter 2013-02-14 01:29:17

+0

@selfsheariffter,不,我的調試器說matrix2RowCount是2. – rdelmar 2013-02-14 01:33:18

+0

非常感謝你。 – selfsheariffter 2013-02-14 02:12:25