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