我对Java很陌生,想知道如何在我提供扫描仪的时候让扫描仪接受输入,而其他一切仍然有效。我试过像这样使用while循环
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
String next = scanner.next();
}
它现在一直接受输入,但没有其他工作。我试过谷歌搜索,但找不到任何有帮助我的东西。我知道我会被告知阅读Java文档,但我不知道应该在那里阅读。
基本上我想要做的是为我的应用程序提供一个简单的命令系统。我目前有这个
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
if (next.startsWith("--")) {
String[] commandLine = next.split("--");
String command = commandLine[1];
if (command.equalsIgnoreCase("start")) {
if (!running) {
timer.scheduleAtFixedRate(new Listen(), 0, 5000);
System.out.println("Task started.");
} else {
System.err.println("Task is already running!");
}
} else if (command.equalsIgnoreCase("end")) {
if (running) {
timer.cancel();
System.out.println("Task stopped.");
} else {
System.err.println("Task is not running!");
}
} else if (command.equalsIgnoreCase("exit")) {
if (running) {
timer.cancel();
}
System.exit(0);
}
}
感谢任何帮助。感谢。
答案 0 :(得分:0)
正如您所注意到的,当前线程在等待终端输入时无法执行任何其他操作。
此问题的解决方案是多线程,Concurrency
的the Java Tutorials部分对此进行了描述。
...并发性解释了如何编写同时执行多个任务的应用程序...本课程介绍了平台的基本并发支持,并总结了java.util中的一些高级API。并发包。
答案 1 :(得分:0)
为了在执行其他任务的同时持续响应用户输入,您必须在单独的执行线程中监听用户输入。试试这个:
final Scanner scanner = new Scanner(System.in);
new Thread() {
public void run() {
while (true) {
String next = scanner.next();
//additional code here...
}
}
}.start();
答案 2 :(得分:0)