您好我的2d数组列正在打印两次。请帮我识别错误的代码。以下是我的尝试:
public class ArrayExercise {
public static void main(String[] args){
String[][] myArray = {
{"Philippines", "South Korea", "Japan", "Israel"}, // Countries
{"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
};
String outputString = String.format("%16s\t%9s", "Country", "City" );
System.out.println(outputString);
for( int col = 0; col < myArray[0].length; ++col ){
for( int row = 0; row < myArray.length; ++row ){
System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col] );
}
System.out.println();
}
}
}
这让我疯了,我似乎无法找到错误:(
答案 0 :(得分:2)
在内部循环中,您要打印行: - myArray[0][col], myArray[1][col]
然后你使用内循环迭代那个东西: -
for( int row = 0; row < myArray.length; ++row ){
System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col] );
}
您需要删除此内循环: -
for( int col = 0; col < myArray[0].length; ++col ){
System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col] );
System.out.println();
}
答案 1 :(得分:0)
删除内部循环,因为您实际上并不需要它来完成:
for ( int col = 0; col < myArray[0].length; ++col ) {
System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col]);
System.out.println();
}
即,对于每个国家/地区(myArray[0][col]
),请打印其首都(myArray[1][col]
)。
答案 2 :(得分:0)
内循环使其打印两次。你永远不会使用row
。
for( int col = 0; col < myArray[0].length; ++col ){
System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col] );
System.out.println();
}
答案 3 :(得分:0)
代码循环两次,同时打印相同的东西。删除内部for循环。
答案 4 :(得分:0)
使用它:
System.out.printf( "%16s\t", myArray[row][col] );
而不是:
System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col] );
您正在打印行: - myArray[0][col], myArray[1][col]
答案 5 :(得分:0)
你的“myArray.length”是两个。因此代码两次通过内部“for”循环。循环变量“row”从不在内部“for”中使用。因此,同样的东西打印两次。
取出内心的“for”。
答案 6 :(得分:0)
你有一个for循环太多,我删除了最里面的一个,它按预期工作。
public static void main(String[] args){
String[][] myArray = {
{"Philippines", "South Korea", "Japan", "Israel"}, // Countries
{"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
};
String outputString = String.format("%16s\t%9s", "Country", "City" );
System.out.println(outputString);
for( int col = 0; col < myArray[0].length; col++ ){
System.out.printf( "%16s\t%9s", myArray[0][col], myArray[1][col] );
System.out.println();
}
}
答案 7 :(得分:0)
考虑到你的数据不像棋盘,你必须访问每一行的每一列才能访问每个方块,但更像是一个橱柜。
你知道有多少列。 (2)
因此,您只需循环第一列中的数量,并在每个条目的第二列中检查资本是什么。