为什么else语句是无限循环?

use*_*469 1 java loops infinite-loop

我是Java的新手,我正在尝试进行数据验证.当我使用有效数据时,代码运行正常,但是当我输入一个字符串而不是一个整数时,代码就会永远循环.它只是循环"输入错误.请输入一个数字." 提前致谢!

    //Get input from user
    System.out.print("What is your name (Last, First)? ");
    String name = scan.nextLine();
    System.out.print("enter a date:");
    String datein = scan.nextLine();

    boolean valid = false;
    while (valid != true)
    {   
        System.out.print("Electricity used (KW):");
        if (scan.hasNextDouble())
        {
            electricityUsed = scan.nextDouble();
            valid = true;
        }
        else
            System.out.println("Bad input. Please enter a number.");
    }
Run Code Online (Sandbox Code Playgroud)

Nim*_*sky 8

因为hasNextDouble总是返回false.

这是医生.你回答你自己的问题:

但是当我输入一个字符串而不是整数时

  • +1如果你输入的只是一个双精度数字,它会一直发现它不是双精度数,而且永远不会消耗它.将`scan.nextLine();`添加到`else`块. (2认同)