簡體   English   中英

關於Java中的for循環的困惑

[英]Confusion about for loop in Java

我寫了這樣的for循環:

for(int i = 0; (char) System.in.read() != 's'; i++){
    System.out.print(i);
}

我希望程序在我在鍵盤上鍵入s之前一直打印數字。 但是,每次鍵入字母時,命令提示符下都會出現three numbers

a
012
q
345

每個字母鍵入后,在控制台上應該只印有一個數字,但是有三個。 為什么?

正如您的一些評論者所述,問題不在於for()循環,而在於System.in.read(),該問題還將提供輸入流中的回車符/換行符作為字符(這也是為什么您的輸出分布在多行中,而不是所有內容都在一行中)

就像Brian在評論中所說的那樣,是因為輸入被緩沖了。 當您鍵入a然后按回車鍵時,回車鍵將刷新緩沖區,並且您看到循環執行3次。 第一個字符為a ,第二個字符為\\n\\r代表新行和回車符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM