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 に答える