你好,这只是一个简单的二维数组问题,我想在2列中显示我的2个数组元素,如下所示:
国家城市
Phils Manila
SK首尔
日本东京
以色列耶路撒冷
这是我尝试过的代码:
public class ArrayExercise {
public static void main(String[] args){
String[][] myArray = {
{"Philippines", "South Korea", "Japan", "Israel"}, // Countries
{"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
};
System.out.print( "Countries\tCities\n" );
for( int row = 0; row < myArray.length; ++row ){
System.out.print( "" );
for( int col = 0; col < myArray[row].length; ++col ){
System.out.print( "" + myArray[row][col] + "\t" );
}
}
System.out.println( "" );
}
}
但我不能让它显示在2列..任何帮助肯定是赞赏。谢谢你们:))
答案 0 :(得分:2)
循环浏览myArray[row]
后,您不会添加换行符。您需要在循环后添加此内容以打印新行:
System.out.println();
一般情况下,如果您想要换行,请不要拨打System.out.print("\n")
,而是System.out.println()
。 System.out.println()
使用系统行结尾,它不一定是换行符(\n
)。
答案 1 :(得分:2)
更新: - 以下是在2列中打印它们的方法: -
String[][] myArray = {
{"Philippines", "South Korea", "Japan", "Israel"}, // Countries
{"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
};
int j = 0;
while (j < myArray[0].length) {
System.out.printf("%-15s - %-15s", myArray[0][j], myArray[1][j++]);
System.out.println();
}
由于您希望为每列平行打印两行值。
您可以迭代列,并打印该对应列的两行的值。
注意: - 我使用了值15
进行格式化。通常,当字符串(国家/地区或城市)的长度大于该值时,可能会给您错误的结果..
对于更多改进,您可以将15
替换为最长country string
和最长city string
的长度,来自两行..
答案 2 :(得分:1)
如何先迭代col然后再行..
for( int col = 0; col < myArray[0].length; ++col ){
for( int row = 0; row < myArray.length; ++row ){
System.out.print(myArray[row][col]);
System.out.print("\t");
}
System.out.println();
}
<强>解释强>
你的二维数组就像那样
菲律宾[0,0]韩国[0,1]日本[0,2]以色列[0,3]
马尼拉[1,0]首尔[1,1]东京[1,2]耶路撒冷[1,3]
但你想要的是[row,col]是以前的索引。
所以用列迭代outerloop。 在内部循环内,迭代行并使用“\ t”分隔。 在内循环之后,我打印一个新行。
答案 3 :(得分:1)
如果你确定你只处理两个等长的列表:
public class ArrayExercise {
public static void main(String[] args){
String[][] data = {
{"Philippines", "South Korea", "Japan", "Israel"}, // Countries
{"Manila", "Seoul", "Tokyo", "Jerusalem" } // capital cities
};
System.out.print("Countries\tCities\n");
int colLength = data[0].length;
for (int i = 0; i < colLength; ++i) {
System.out.printf("%s\t%s\n", data[0][i], data[1][i]);
}
}
}
这将给出(标签式)输出:
国家城市
菲律宾马尼拉
韩国首尔
日本东京
以色列耶路撒冷
答案 4 :(得分:0)
首先,您需要找出第一列(国家/地区)中最长元素的长度,比如最大长度为5,并且您希望每行都有一个前导空格。而且你还需要找到第二列的最大长度,比如说它是8.完成后,你可以使用String.format
打印元素:
outputString = String.format("%1$6s %2$8s\n",country, city);
System.out.println(outputString);
格式化程序将第一个参数的宽度设置为X
,因此您将获得正确的缩进。这将使用任何长度的字符串。