代码段
while(!((input = sc.nextLine()) != null)) {
sc = new Scanner(input).useDelimiter(" ");
while (sc.hasNextLine()) {
in[index] = sc.next();
index++;
}
if (index < 3 || !in[0].equals("ping")) {
throw new IllegalArgumentException(
"Usage ping <destination> <port number missing> . . . ."
+ in[0] + " " + in[1] + " " + in[2]);
}
}
我想继续阅读用户输入,但在第一次迭代后,我没有找到新行。扫描仪不等待用户输入,而是继续前进。感谢
您的顶级while循环正在做与您想要的相反的事情。首先,它将input
设置为等于sc.nextLine()
,这是好的。然后将CCD_ 3与CCD_。如果这个比较产生true
,那么您就有了输入,这意味着循环应该继续。但是,您将否定该比较的结果,这将使循环在有输入时终止。
去掉感叹号,你就应该很好了。
编辑
仔细想想,当sc.hasNextLine()
返回false
时,您的while内部循环正在退出。之后,您将遍历条件语句并返回顶部。由于sc.hasNextLine()
已经返回了false
,当然sc.nextLine()
将返回null
。输入已经在内部循环中结束,因此外部循环也将退出。