虽然循环不会停止运行

时间:2016-11-03 10:35:43

标签: java while-loop java.util.scanner

我有一个while循环,当没有更多的整数被读取时,它应该结束。由于某种原因,它继续检查(或至少我相信)并且不会返回打印声明。我的示例输入看起来像,

  

20 21 22 23

我在hasNextLine()之前尝试hasNextInt(),尝试/最后阻止并关闭扫描程序以及阅读论坛。

如果我对错误的问题进行了措辞/格式化,或者我还没有找到另一种资源,我会很感激一些反馈意见。我真的只是想学习。

public static void main(String[] args) {
    x = 0;
    in = new Scanner(System.in);

    while (in.hasNextInt()) {
        x = in.nextInt();
        reverse(x);
        beautiful(x, reverse(x), y);
    }

    printCount(count);
}

4 个答案:

答案 0 :(得分:0)

in.hasNextInt()连续读取数据。所以你应该使用休息;在您的要求完成后,以适当的条件停止此操作。

答案 1 :(得分:0)

在这些行之后

    while (in.hasNextInt()) {
        x = in.nextInt();

插入行

        if (x == 0) break;

并且在输入0后循环将停止 - 当然,您可以选择另一个号码来停止,i。即-1

答案 2 :(得分:0)

我认为有很多方法可以解决这个问题,但我想到了这个:

  1. 创建第二个扫描程序并将第一个扫描程序输入new Scanner(in.nextLine());
  2. 传递给它
  3. 创建一个while循环,直到没有数字为止。 sc.hasNextInt()

答案 3 :(得分:0)

您的输入应以某种方式终止。 1 2 3 4和1 2 3 4 5都是有效输入,因为扫描仪无法自行决定在何处结束。可以假设数字序列由Windows上的EOF字符Ctrl-Z和unix上的Ctrl-D终止。

有关此问题的更多帮助,请查看此link