Java数据验证

时间:2018-05-23 15:36:34

标签: java

我正在尝试创建一个数据验证器来确认我有一个整数,以及一个0到4之间的整数。我当前的代码卡在嵌套的If Else语句中的循环中,我无法弄清楚原因。任何帮助表示赞赏。

   Scanner in = new Scanner ( System.in);
   int lives;
   lives = 0;
   boolean isNumber;
   do {
       System.out.println ( "How many lives do you currently have? (Max. 4): " );
       if ( in.hasNextInt() ) {
           lives = in.nextInt();
            if (lives > 4){
                System.out.println ( "Please try again. Number must be between 1 and 4" );
                isNumber = false;
                in.next ();
           }
           else {
           lives = in.nextInt();
           isNumber = true; 
           }
       }
       else {
           System.out.println ( "Please try again. Number must be between 1 and 4" );
           isNumber = false;
           in.next ();
       }
   }
   while (! (isNumber ) );

2 个答案:

答案 0 :(得分:2)

试试这个

Scanner in = new Scanner(System.in);
    int lives = 0;
    boolean isNumber = false;
    do {
        System.out.println("How many lives do you currently have? (Max. 4): ");
        if (in.hasNextLine()) { // when enter key has been hit
            try {
                lives = Integer.parseInt(in.nextLine().trim());
                if (lives < 1  || lives > 4) {
                    System.out.println("Please try again. Number must be between 1 and 4");
                    isNumber = false;
                } else {
                    isNumber = true;
                }
            } catch (NumberFormatException e) {
                //Report your error here to the user
                System.out.println("Please enter a number");
                isNumber = false;
            }
        } 

    } while (!(isNumber));

答案 1 :(得分:0)

尝试查看Why does hasNextLine() never end?,看看in.hasNextLin()是否与in.hasNextInt()

相同