这里发生了什么,即使用 print 时,为什么它不会在行停止的地方打印?
for(int i = 0; i <=2; i++){
System.out.println(i)
System.out.print("s");
}
为什么它不会像这样打印 2 之后的 s :
0
1
2s
据我所知,有人说它会永远缓冲?这意味着什么?计算机会知道打印 2 旁边的字母 s,因为它已经停在那里了,那为什么不打印呢?
您在循环中的第一条语句之后缺少一个分号。
for (int i = 0; i <=2; i++) {
System.out.println(i);
System.out.print("s");
}
上面的代码会输出这个:
0秒
1
秒2
秒
但是,如果您这样做:
for (int i = 0; i <=2; i++) {
System.out.print(i);
System.out.println("s");
}
这将打印以下内容:
0秒
1
秒 2 秒
With an extra line break at the end.
对于循环中的每次迭代,代码打印整数,添加一个换行符(因为println
已使用)并打印 s。所以你会有一个像这样的输出
0
s1
s2
s
你的代码会发生什么:
0
s1
s2
s
为什么会发生:如果你使用
print("s");
该程序将打印“s”,仅此而已。如果您使用:
println("s");
你会在每个“s”之后得到一个新行,我想这就是你想要的。
这是因为 println 将在语句的末尾留下换行符(\n),而不是在语句的开头。
实际上print
打印s
行停止的位置!。这里的问题是,println
已经先换了一条线,然后print
从那个地方开始。
两个语句都在同一个循环中,因此将一个接一个地运行。
所以:
System.out.println(i);
将给 i(无论该变量是什么)然后换行。
System.out.print("s");
将打印“s”。没有新线。
你的输出将是
0
s1
s2
s
而且由于您只想要循环的最后一次迭代的输出,因此您需要一个“if”:
for (int i = 0; i <= 2; i++) {
System.out.print(i);
if (i == 2) {
System.out.print("s");
} else {
System.out.println("");
}
}
这使:
0
1
2s
The actual answer is that the previous println already puts it to the next line. Using System.out.print("s") actually goes horizontally forever, therefore it never prints.