此答案主要基于问题的标题。如果您提供更多信息,我们可能会提供更多帮助。
代码中有几个小问题导致它无法正常工作。首先,无论您何时循环使用多维数组,您都需要确保内部循环使用正确的限制。 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