[英]What's wrong with For Loop?
package mygradeloops;
import java.io.IOException;
public class MyGradeLoops {
public static void main(String[] args) throws IOException {
char x = 'A';
for (x='0';x<'9';x++){
System.out.println("Please enter in one of your grades.");
System.in.read();
System.out.println("Keep going!");
}
}
}
該代碼在第一個“等級”之后保持兩次打印。 有誰知道為什么要打印兩次? 我做錯了“ For Loop”嗎?
這是“兩次打印”,因為當您按回車鍵輸入一個字符時,實際上是在寫兩個字符:您鍵入的字符和\\n
(換行符)。
添加第二個System.in.read();
調用以讀取換行符:
for (x='0';x<'9';x++){
System.out.println("Please enter in one of your grades.");
System.in.read(); // your character
System.in.read(); // newline
System.out.println("Keep going!");
}
同樣,不需要將x
初始化為'A'
, char x;
很好 實際上,在此循環中使用char
沒有任何意義,首選使用int
。
System.in
( InputStream
)的read
方法僅從輸入流讀取一個字節的數據。 因為必須按“ Enter”鍵才能將輸入發送到流,所以流上有兩個字符-鍵入的字符和換行符。
for
循環循環兩次,然后“兩次打印” Keep going!
並且Please enter in one of your grades.
因為每次迭代都會讀取流中兩個字符之一。
將System.in
包裝在InputStreamReader
然后再包裝BufferedReader
或者僅使用System.in
初始化Scanner
會更容易。 使用BufferedReader
您可以僅調用readLine()
,而使用Scanner
您可以調用nextLine()
。
同樣,還不清楚為什么要使用char
s從'0'
循環到'9'
。 將int
用作從0
到9
a
and循環會更清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.