在行上打印数组的最简单方法是什么?
public static void main(String[] args) {
String[] Test = new String[]{"1","2","3","4","5","6","7","8","9"};
}
我希望能够打印这个样子。在行上打印数组的最简单方法是什么?
1 2 3
4 5 6
7 8 9
我尝试过使用for循环三次打印它,但我想知道是否有更简单的方法来做到这一点。
的printf可能会有帮助。
这个循环应该做的:
for (int i = 0; i < Test.length; i++) {
System.out.printf("%s%s", Test[i], i % 3 == 2 ? "\n" : " ");
}
感谢您的是最简单的一个和工作一个 – user2775042 2014-09-03 08:50:24
@ user2775042更好地遵循Java命名约定。例如。使用'test'而不是'Test'作为变量名称 – Kent 2014-09-03 08:53:03
尝试:
for (int i = 0 ; i < Test.length ; i++) {
System.out.print(Test[i]+" ");
if (i%3 == 2) {
System.out.println();
}
}
或
for (int i = 0 ; i < Test.length-2 ; i++) {
System.out.print(Test[i]+" "+Test[i+1]+" "+Test[i+2]+"\n");
}
,并更改为test
Test
名称。
public static void main(String[] args) {
String[] Test = new String[]{"1","2","3","4","5","6","7","8","9"};
for(int i = 1; i <= Test.length; i++) {
System.out.print(Test[i - 1]+" ");
if(i % 3 == 0)
System.out.println();
}
}
对于完美对齐,你需要做两遍。一个用于跟踪每个待打印列的最大尺寸,另一个用于打印调整到所需尺寸的所有列。
这是因为如果你开始打印的第一行
1 2 3
宇宙的一些迂回运动最终将保证第二排将包含数字
3425 2352342 2
,它会打击你的对准。但是,如果你走在数据一次,更新列的最大尺寸(如有必要)
(row 1) (column 1 max size is 1) (column 2 max size is 1) (column 3 max size is 1)
(row 2) (column 1 max size is 4) (column 2 max size is 7) (column 3 max size is 1)
然后你去通过数据的第二次,你可以打印与填充正确数量的每一行(空间为最大列宽度 - 数据的宽度,然后将值)
1 2 3
3425 2352342 2
现在关于如何变换的一个维阵列成二维阵列,这取决于。我们可以从头开始声明一个二维数组,也可以指定行的宽度,直到行被填充为止。
这两种技术都可以工作,并根据情况,你可能会发现一种方法适合优于其他一些问题(但有可能不是解决所有问题的完美解决方案)。
添加一个新行每个'索引%3 == 0'? – TheLostMind 2014-09-03 08:39:29
@TheLostMind我认为它应该是'index%3 == 2'? java数组是基于0的。 – Kent 2014-09-03 08:44:54
@Kent - 是的。这将在开始时添加一个新的行。这也取决于你放置线的位置。 – TheLostMind 2014-09-03 08:46:57