1
Scanner scanner = new Scanner(system.in);
String input = new String();

while(!input.equalsIgnoreCase("stop")) {
input = scanner.nextLine();
}

为什么这不起作用?循环永远持续。我以前使用过这种方法一百万次,现在它不起作用。

编辑**

好的,我正在使用 JGrasp(因为这是我的教授希望我们使用的),当我在 netbeans 中尝试它时,它运行良好......

编辑2**

首先,我不确定这是否是问题,但在我的代码中,我在主扫描仪扫描仪 = new Scanner(file); 的开头有类似的东西。后来像这个扫描仪 = new Scanner(System.in); 这就是前面的代码片段开始的地方。所以首先我改变了这一点,让 main 为我需要带有字符串检查的 while 循环的区域调用一个新方法。我还重新格式化了循环:

Scanner scanner = new Scanner(System.in);
    String input = new String();

    while(!input.contains("stop")) {
        System.out.print("Enter an option: ");
        input = scanner.nextLine();
    }

现在它工作正常。

编辑3**

所以我尝试了新方法中的原始格式,它也可以完美运行。我现在相信这与我如何使用文件扫描仪然后使用 System.in 为新的扫描仪对象重用该引用有关。我对此不是 100% 的,但是将 while 循环移动到它自己的方法并且不将其保留在 main 中是有效的,所以我觉得它与此有关。

4

2 回答 2

1

也许您应该检查 Scanner 是否还有要解析的内容?

while(scanner.hasNextLine() && !input.equalsIgnoreCase("stop")) {
    input = scanner.nextLine();
}
于 2012-10-08T05:56:45.380 回答
0

代码工作正常:除了编译错误,即请使用System.in而不是system.in

Scanner scanner = new Scanner(System.in);
String input = new String();

while(!input.equalsIgnoreCase("stop")) {
    input = scanner.nextLine();
}
于 2012-10-08T06:16:54.050 回答