我需要以8行來打印一個列表。說明如果列表是長整數,它將在第一行打印8,下一行打印2。這裏是我的代碼:打印一個8行的列表(java)
for(int i = 0; i < size; i++){
System.out.println(list[i] + " ");
}
我怎麼能打印它的行數爲8,而不是每行打印一行?
我需要以8行來打印一個列表。說明如果列表是長整數,它將在第一行打印8,下一行打印2。這裏是我的代碼:打印一個8行的列表(java)
for(int i = 0; i < size; i++){
System.out.println(list[i] + " ");
}
我怎麼能打印它的行數爲8,而不是每行打印一行?
使用StringBuilder
:
StringBuilder sb = new StringBuilder();
sb.append(list[0]).append(" ");
for (int i = 1 ; i < size; i++) {
sb.append(list[i]).append(" ");
if ((i + 1) % 8 == 0) { sb.append("\n"); }
}
System.out.print(sb.toString());
for(int i = 0; i < size; i++){
System.out.println(list[i] + "\n");
}
\ n是換新線。
我不希望把每一個在同一行。我想在每行上打印8個 – Josh
然後@MДΓΓБДLL給出了答案:) –
for (int nI = 0; nI < list.size(); nI++)
{
System.out.print(list[nI] + " ");
// new line if you hit 8th, 16th, etc. item in the list
if (nI > 1 && ((nI+1) % 8 == 0))
System.out.print("\n");
}
這一個也有一個錯誤。它不會破壞正確的元素。 –
你說得對,修理它。 – harbinja
for (int i = 0; i < size; i++) {
System.out.print(list[i]);
if (i % 8 == 7) {
System.out.println();
} else {
System.out.print(" ");
}
}
if (size % 8 != 0) {
System.out.println();
}
技術上,print("\n")
和println()
不一定有同樣的效果,這也是爲什麼上面不只是做System.out.print((i % 8 ==7) ? "\n" : " ")
。
如果確保最後一行終止,即使它少於8個元素,額外的也是如此。
我到目前爲止看到的每個答案都有一個錯誤,它在哪裏出現問題。使用以下命令:
int[] list = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
int br = 8;
for (int i = 0; i < list.length; i++) {
System.out.print(list[i] + " ");
if (i % br == (br - 1))
System.out.println();
}
或者:
int br = 8;
for (int i = 0; i < list.length; i++) {
if (i > 0 && i % br == 0)
System.out.println();
System.out.print(list[i] + " ");
}
輸出:
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18
這裏有一些方法(從其他的答案帶到了這個問題),這不能完成。
i % 8 == 0
。這是行不通的,因爲0 % 8 == 0
是真的,這意味着這將導致在第一個元素之後中斷。i > 0 && (i % 8 == 0)
。這是行不通的,因爲數組是零索引的(例如,i
不等於8
,直到第9個元素。換句話說,第一行有9個項目。但是,如果在打印之前檢查中斷, 。元素1
開始循環指數這患有同樣的問題,因爲以前的答案;你仍然會永遠是一個落後指標可以使用。 StringBuilder
使這個邊緣更快,但更重要的是得到一個正確的答案比快之一。
要使用Guava ... Lists.partition將列表分爲最大長度列表。
List<String> myList;
for (List<String> subs : Lists.partition(myList, 8)){
System.out.println(Joiner.on(" ").join(subs));
}
for (int i = 0; i < size; i++)
{
if ((i % 8 == 0) && (i > 0))
{
System.out.println();
}
System.out.print(list[i] + " ");
}
這有一個錯誤。它在第一項之後打印一個換行符。 –
謝謝,我修復了它。 –
現在您正在第一行打印9個項目。 –