我有以下代码:
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String commandArgs[] = sc.nextLine().split("\\s+");
myFunction(commandArgs[]);
// Do something with commandArgs
问题是,在我输入一行之后,没有任何事情发生。我可以输入多行但没有结果,但在我输入EOF
(Ctrl+D
)之后,它们会立即被读取并导致多次调用myFunction
。
在使用xterm
仿真器和以下java版本的Debian发行版上执行时会发生这种情况:
java version "1.7.0_03"
OpenJDK Runtime Environment (IcedTea7 2.1.7) (7u3-2.1.7-1)
OpenJDK 64-Bit Server VM (build 22.0-b10, mixed mode)
该程序在安装了gnome-terminal-server
和Java 8
的Ubuntu 14.04上按预期工作。
答案 0 :(得分:1)
好吧,而不是尝试,
sc.hasNext()
你可以试试吗
sc.hasNextLine()
这似乎已经为我解决了Debian上的这个问题,
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()) {
String commandArgs[] = sc.nextLine().split("\\s+");
myFunction(commandArgs[]);
// Do something with commandArgs