在Java中执行循环后解释println和print语句?

时间:2013-04-09 07:54:42

标签: java println

这里发生了什么,即使用打印时,为什么不打印线停止的位置?

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

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

0

1

2S

据我所知,有人说会永远缓冲吗?那是什么意思?计算机将知道在2旁边打印字母s,因为它已停在那里,为什么不打印?

7 个答案:

答案 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”)实际上永远水平,因此它永远不会打印。