1

我对 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.");
    }
4

3 回答 3

8

因为hasNextDouble总是返回 false。

这是文档。你回答你自己的问题:

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

于 2012-12-31T10:45:19.267 回答
3

要修复它,请添加scan.nextLine()到您的 else 分支。

于 2012-12-31T10:46:49.247 回答
2

一种更简单的方法是使用以下方法。

System.out.print("Electricity used (KW):");
while(!scan.hasNextDouble()) {
    scan.nextLine();
    System.out.println("Bad input. Please enter a number.");
    System.out.print("Electricity used (KW):");
}
double electricityUsed = scan.nextDouble();
于 2012-12-31T10:49:06.327 回答