这里发生了什么,即使用打印时,为什么不打印线停止的位置?
for(int i = 0; i <=2; i++){
System.out.println(i)
System.out.print("s");
}
为什么不会像这样在2之后打印s:
0
1
2S
据我所知,有人说会永远缓冲吗?那是什么意思?计算机将知道在2旁边打印字母s,因为它已停在那里,为什么不打印?
答案 0 :(得分:2)
在循环中的第一个语句后,您缺少分号。
for (int i = 0; i <=2; i++) {
System.out.println(i);
System.out.print("s");
}
以上代码将输出:
0
S1
S2
小号
但是如果你这样做:
for (int i = 0; i <=2; i++) {
System.out.print(i);
System.out.println("s");
}
将打印以下内容:
0
1S
2S
最后有一个额外的换行符。
答案 1 :(得分:1)
对于循环中的每次迭代,代码打印整数,添加换行符(因为使用了println
)并打印s。所以你会得到像
0
S1
S2
取值
答案 2 :(得分:0)
您的代码会发生什么:
0
s1
s2
s
为什么会这样: 如果你使用
print("s");
程序将打印“s”,就是这样。 如果您使用:
println("s");
你会在每个“s”之后得到一个新的一行,我认为这就是你所寻求的。
答案 3 :(得分:0)
这是因为println会在语句的末尾留下换行符(\ n),而不是在语句的开头。
答案 4 :(得分:0)
实际上print
打印了行停止的s
!这里的问题是,println
已经先放了一个新行,然后print
从那个地方开始。
答案 5 :(得分:0)
两个语句都在同一个循环中,因此会一个接一个地运行。
所以:
System.out.println(i);
将给出i(无论该变量是什么)然后是新行。
System.out.print("s");
将打印&#34; s&#34;。没有新线。
您的输出将是
0
s1
s2
s
由于您只需要在循环的最后一次迭代中输出,因此您需要&#39; if&#39;:
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
答案 6 :(得分:0)
实际答案是前一个println已将它放到下一行。使用System.out.print(“s”)实际上永远水平,因此它永远不会打印。