输入的代码是:
import java.io.IOException;
public class A {
public void fn() throws IOException
{
char ch;
do
{
System.out.println("Press C or c to continue.");
ch = (char) System.in.read();
}
while (ch != 'C' && ch != 'c');
}
public static void main(String[] args) throws IOException
{
A a =new A();
a.fn();
}
}
,我得到的输出是:
Press C or c to continue.
m // i entered value "m" here...
Press C or c to continue.
Press C or c to continue.
Press C or c to continue.
为什么输入错误值后的输出是消息的三行而不是一行?
答案 0 :(得分:10)
您对read()
的号码会读取一个字符。当您输入m
并按下ENTER
时,实际发送的内容是三个字符:
m
carriage-return
linefeed
你的程序循环两次以消耗两个额外的输入字符。
您应该使用以下两种方法之一:
Scanner
。我并不赞成这种方法,因为如果输入发生变化,它会有点脆弱。System.in
中换行BufferedReader
并使用readLine()
获取整行而不行终止符,并提取所需的数据。 任何一种方法都可以为您处理不同操作系统上的不同行结尾。