[英]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.