扫描仪在while循环中没有返回新行



代码段

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。输入已经在内部循环中结束,因此外部循环也将退出。

最新更新