我正在尝试编写一个方法,用于打印出用户输入的任何字符,当他输入时按字符添加前一个字符,并在按下回车时抛出异常。我写了下面的代码,但是当我输入时,它会附加我写过的任何字符并且不会抛出异常。非常感谢您的帮助和建议。
public static void inputM(StringBuffer a) throws EntExc, IOException{
char c;
String m;
while(true){
Scanner s = new Scanner(System.in);
m=s.next();
c=m.charAt(0);
if(c=='\r'){
throw new EntExc();
}
System.out.println(a.append(m));
}
}
答案 0 :(得分:0)
这里有一些问题。首先s.next()
抓取一个以空格分隔的标记,并将整个标记作为单个字符串返回。其次,因为Scanner
使用空格作为分隔符,它将永远不会返回\r
,它只会跳过它并读取下一个标记。
为什么不使用s.readLine()
并简单地回显整行?虽然它不会在输入时处理字符(Scanner
无法真正执行此操作,但它总是缓冲行),它将更接近您描述的要求。