此答案主要基於問題的標題。如果您提供更多信息,我們可能會提供更多幫助。
代碼中有幾個小問題導致它無法正常工作。首先,無論您何時循環使用多維數組,您都需要確保內部循環使用正確的限制。 tissue.length
指的是外部數組的長度,但不能保證2d數組中的每個內部數組(即tissue[0].length
返回數組的長度,並且tissue[1].length
可能會返回不同的值)。所以我們首先用tissue[k].length
替換內部環路限制器。
for(int k = 0; k < tissue.length ; k++){
for(int l = 0 ; l < tissue[k].length ; l++){
if(tissue[k][l] == ' '){
tissue[k][l] = tissue[i][j];
tissue[k][l] = temp;
return;
}
}
}
下一期我看到的是交換。您實際上的代碼會查找任何數組中的第一個空格,並在i,j
處插入值,但不要將任何內容放入索引i,j
。埃利奧特提到的是,if語句中的兩行代替tissue[k][l]
具有相同的值,存儲在tissue[i][j]
。相反,我們會將第一行更改爲tissue[i][j] = tissue[k][l]
以執行交換。所以我們最終使用下面的方法將第一個字符串中的第一個空格字符替換爲i,j
處的字符。
public static void moveTo(char[][] tissue, int i, int j){
char temp = tissue[i][j];
for(int k = 0; k < tissue.length ; k++){
for(int l = 0 ; l < tissue[k].length ; l++){
if(tissue[k][l] == ' '){
tissue[i][j] = tissue[k][l];
tissue[k][l] = temp;
return;
}
}
}
}
爲什麼你用'tissue [i] [j]'中的字符替換''''兩次? **這應該做什麼**? – 2014-11-23 17:11:29
您可能需要在此處提供更多詳細信息。你的代碼似乎有幾個缺陷。但是實際上錯誤取決於它應該做什麼。 – 2014-11-23 17:14:44
'temp'和'tissue [i] [j]'包含相同的值。因此,在'if()'塊內沒有交換。 – hfontanez 2014-11-23 17:33:28