【问题标题】:How to print characters as user inpt them in console and stop when user enters enter character java如何在用户在控制台中输入字符时打印字符并在用户输入输入字符时停止 java
【发布时间】:2014-03-27 20:16:56
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

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

为什么不使用s.readLine() 并简单地回显整行?虽然它不会在输入字符时处理它们(Scanner 不能真正做到这一点,它总是缓冲行),但它会更接近您描述的要求。

【讨论】:

  • 谢谢!是的,这确实使它变得更好,但仍然没有办法让它们逐个字符地打印而不是逐行打印吗?
  • 感谢您的链接。但是当我做 readline 时,它​​似乎没有得到 '\r' 字符。那我怎么知道用户按了回车呢?
  • @Ana 当readLine() 返回时,表示用户按下回车键。您实际上不必检查它。
  • 我现在明白了。非常感谢所有的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多