0

这里发生了什么,即使用 print 时,为什么它不会在行停止的地方打印?

for(int i = 0; i <=2; i++){
System.out.println(i)
System.out.print("s");
}

为什么它不会像这样打印 2 之后的 s :

0

1

2s

据我所知,有人说它会永远缓冲?这意味着什么?计算机会知道打印 2 旁边的字母 s,因为它已经停在那里了,那为什么不打印呢?

4

7 回答 7

2

您在循环中的第一条语句之后缺少一个分号。

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.

于 2013-04-09T08:06:51.377 回答
1

对于循环中的每次迭代,代码打印整数,添加一个换行符(因为println已使用)并打印 s。所以你会有一个像这样的输出

0

s1

s2

s

于 2013-04-09T07:59:58.997 回答
0

你的代码会发生什么:

0
s1 
s2
s

为什么会发生:如果你使用

print("s");

该程序将打印“s”,仅此而已。如果您使用:

println("s");

你会在每个“s”之后得到一个新行,我想这就是你想要的。

于 2013-04-09T08:00:19.693 回答
0

这是因为 println 将在语句的末尾留下换行符(\n),而不是在语句的开头。

于 2013-04-09T08:01:10.183 回答
0

实际上print打印s行停止的位置!。这里的问题是,println已经先换了一条线,然后print从那个地方开始。

于 2013-04-09T08:03:57.500 回答
0

两个语句都在同一个循环中,因此将一个接一个地运行。

所以:

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
于 2013-04-09T08:04:47.367 回答
0

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.

于 2013-04-09T08:22:04.130 回答