Java';s扫描器将在键入EOF后只读
我有以下代码:Java';s扫描器将在键入EOF后只读,java,java.util.scanner,Java,Java.util.scanner,我有以下代码: Scanner sc = new Scanner(System.in); while(sc.hasNext()) { String commandArgs[] = sc.nextLine().split("\\s+"); myFunction(commandArgs[]); // Do something with commandArgs 问题是,在我输入一行之后,什么都没有发生。我可以键入多行而没有结果,但是在我键入EOF(Ctrl+D)之后,它们会一
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
emulator和以下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终端服务器和java8
的Ubuntu 14.04上按预期运行。好吧,请尝试
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
我相信给定的副本不是副本。OP说这个程序在Ubuntu中工作,但在Debian中不工作。而且它只在输入EOF后才开始运行myFunction
,这显然不是一个根本不知道应该输入EOF的问题。OP:请说明您如何在这两个环境中运行您的程序,它们上安装了什么JVM,您使用的是什么终端仿真器等等@realpoint,两个建议的问题并不能真正回答我的问题。在我输入EOF
后,程序按预期工作,但循环在我输入之前不会被输入(当我强制输入新行时,循环不会被输入)。我用要求的信息更新了细节。