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循環三次打印它,但我想知道是否有更簡單的方法來做到這一點。
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