【问题标题】:how to write java program to handle continuous input by character如何编写java程序来处理字符的连续输入
【发布时间】:2014-04-01 21:38:38
【问题描述】:

我正在尝试编写一个 java 程序来逐个字符地处理连续输入。 基本上,这意味着,有一个字符串变量“输入”来记录当前输入的字符串。 因此,如果当前输入的类型是“W”,那么输入应该是“W”并且用户保持输入“h”,那么输入应该是“Wh”等等。

我希望它是一个字符一个字符的,我认为它应该是使用扫描仪的一些 while 循环?

好的。我可以一串一串地做。但是扫描仪什么时候停止? 我试过了:

while(in.hasNext()){ 字符串 temp = in.next(); 如果(temp.equals(“”)){ 休息; } }

但扫描仪并没有停止。循环没有停止。 java的输入值是多少 从“Enter Return”键?需要导入键盘监听器吗?

【问题讨论】:

  • 我试过 while(in.hasNext()) 其中 in 是 Scanner 类型。但它不能正常工作。我的观点是当用户输入“什么是……”时,输入变量将动态变化,而不是完成整个读取周期。

标签: java string input


【解决方案1】:

不,扫描器不起作用,因为它只在按下ENTER 后接受字符串。您将需要一个非标准控制台或创建一个 Swing GUI,使用添加了 DocumentListener 的 JTextField。


编辑
对于@tieTYT 他提供了一个指向this answer 的链接,该链接建议使用控制台来解决这个问题。把他的代码放到一个小程序里:

import java.io.Console;
import java.io.IOException;

public class Test {
   public static void main(String[] args) throws IOException {
      Console cons = System.console();
      if (cons == null) {
         System.out.println("Console is null");
         System.exit(-1);
      } else {
         System.out.println("Enter text, or \"z\" to exit:");
         while (true) {
            char c = (char) cons.reader().read();
            System.out.println("" + c);
            if (c == 'z') {
               System.exit(0);   
            }
         }
      }
   }
}

【讨论】:

  • 不,它看起来很有希望。当我尝试它时,第一行返回 null。
  • @tieTYT:我刚刚测试了它,可以验证它不起作用。控制台仅在按下输入时获取字符。我将在上面发布我的代码。
  • 这正在成为一个旁白,但知道为什么它为我返回 null 吗?我在 Intellij IDEA 中运行 JDK 6
  • @tieTYT:它可能为 null,因为您在 Intellij 中运行它。如果我在 Eclipse 中运行它是 null,但如果我从命令行运行它则不是。
猜你喜欢
  • 2021-11-06
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 2017-08-02
相关资源
最近更新 更多