我需要以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个项目。 –