如何编写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编写程序,对分行输入的若干字符串按字典序(由小到大)进行排序并输出。