好的,所以我告诉我的内循环有一个轻微的逻辑错误。显然,如果我的[2] [2]数组是2X3元素或3X2元素,它不会工作,有人可以告诉我如何解决这个小问题吗?
public static void dispArr(String [][] country){
for(int i= 0; i<country.length; i++){ // both for loops count from 0 to 1 which are the only numbers required for this given array
for(int j= 0; j<country.length; j++){
System.out.print(country[i][j]); //this will output [0][0],[0][1],[1][0] and[1][1] as identified above.
}
System.out.println("\n"); //create space between both
}
}
答案 0 :(得分:8)
将其更改为:
for (int i = 0; i < country.length; i++) {
// note the change here
for (int j = 0; j < country[i].length; j++) {
// ...
}
}
否则,内部循环将不会计算到它所需的数量。
举个简单的例子,如果你有这个:
[[1, 2, 3], [4, 5, 6]]
它将成为(使用您的原始代码):
for (int i = 0; i < 2; i++) {
// oh no! not counting far enough
for (int j = 0; j < 2; j++) {
// ...
}
}
你必须采用你正在循环的内部数组的长度,而不是数量的内部数组,如果这对你有意义的话。
答案 1 :(得分:2)
在Java中,二维数组本质上是一个数组数组。因此,在计算第二个维度时,需要放置第一个维度(数组)的索引。
public static void dispArr(String [][] country){
for(int i= 0; i<country.length; i++){ // both for loops count from 0 to 1 which are the only numbers required for this given array
for(int j= 0; j<country[i].length; j++){
System.out.print(country[i][j]); //this will output [0][0],[0][1],[1][0] and[1][1] as identified above.
}
System.out.println("\n"); //create space between both
}
}
答案 2 :(得分:0)
country.length
仅为您提供第一个维度。 country[i].length
将为您提供第二个维度。
答案 3 :(得分:0)
你的内循环迭代矩阵中的第一个维度,应该是
for ( int j=0; j < country[i].length; j++ ) { ...
代替。请注意[i]
之后的country
。
干杯,