如何编写java程序来处理字符的连续输入

Posted

技术标签:

【中文标题】如何编写java程序来处理字符的连续输入【英文标题】:how to write java program to handle continuous input by character 【发布时间】: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 类型。但它不能正常工作。我的观点是当用户输入“什么是……”时,输入变量将动态变化,而不是完成整个读取周期。 【参考方案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,但如果我从命令行运行它则不是。

以上是关于如何编写java程序来处理字符的连续输入的主要内容,如果未能解决你的问题,请参考以下文章

用java编写一个字符串的程序,找出连续出现三次的字符

用java编写一个应用程序:要求用户输入一系列字符串,每个字符串占一行 ? 求高手帮忙。。。

编写程序输入一个小写字母,如何将其转换为大写字母输出

用Java编写程序,对分行输入的若干字符串按字典序(由小到大)进行排序并输出。

PYTHON编写程序,功能如何把输入的字符串的大写字母变成小写字母,其中的小写字母变成大写字母?

字符串处理算法最长连续字符及其出现次数的算法设计及C代码实现