gpt4 book ai didi

java - 扫描仪在 while 循环中不返回新行

转载 作者:行者123 更新时间:2023-12-01 10:06:56 25 4
gpt4 key购买 nike

代码片段

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(),这很好。然后将 inputnull 进行比较。如果此比较产生 true,则您有输入,这意味着循环应该继续。但是,您随后会否定该比较的结果,这使得循环在有输入时终止。

去掉感叹号,就可以了。

编辑

再想一想,当 sc.hasNextLine() 返回 false 时,您的内部 while 循环就会退出。之后,您将浏览条件语句并返回顶部。由于 sc.hasNextLine() 已经返回 false,所以 sc.nextLine() 将返回 null。在内循环中输入已经结束,因此外循环也会退出。

关于java - 扫描仪在 while 循环中不返回新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36376134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com