如何用户在控制台中打印字符,并在用户输入字符java时停止

时间:2014-03-27 20:16:56

标签: java input character java.util.scanner stringbuffer

我正在尝试编写一个方法,用于打印出用户输入的任何字符,当他输入时按字符添加前一个字符,并在按下回车时抛出异常。我写了下面的代码,但是当我输入时,它会附加我写过的任何字符并且不会抛出异常。非常感谢您的帮助和建议。

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));
    }
}

1 个答案:

答案 0 :(得分:0)

这里有一些问题。首先s.next()抓取一个以空格分隔的标记,并将整个标记作为单个字符串返回。其次,因为Scanner使用空格作为分隔符,它将永远不会返回\r,它只会跳过它并读取下一个标记。

为什么不使用s.readLine()并简单地回显整行?虽然它不会在输入时处理字符(Scanner无法真正执行此操作,但它总是缓冲行),它将更接近您描述的要求。