在Java中输入无效后重新提示用户

时间:2013-09-10 14:38:53

标签: java loops for-loop while-loop do-while

我正在用java编写这个程序,我需要在输入无效后重新提示用户。我找到了一个解决方案,但发现如果用户在重新提示后输入另一个无效输入,那么它会继续。有人可以告诉我一个更好的解决方案吗?无论如何,我会告诉你我有什么:

System.out.println("What is your age?\n");
    age = userInput.nextInt();

    if((age > 120) || (age < 1)) {//error message
        System.out.println("ERROR Please enter a valid age");
        System.out.println("");
        System.out.println("What is your age?\n");
        age = userInput.nextInt();
    }//end if

如果用户在再次提示后输入了无效输入,程序将继续,我该如何克服?

6 个答案:

答案 0 :(得分:6)

if替换为while

BAM,问题解决了。

答案 1 :(得分:2)

使用while循环。

while (true) {
    System.out.println("What is your age?\n");
    age = userInput.nextInt();
    if ((age > 120) || (age < 1))
        System.out.println("ERROR Please enter a valid age\n");
    else
        break;
}

答案 2 :(得分:1)

你可以将它放入while循环中,以便它一直循环直到满足条件 -

System.out.println("What is your age?\n");
age = userInput.nextInt();

while((age > 120) || (age < 1)) {//error message
    System.out.println("ERROR Please enter a valid age");
    System.out.println("");
    System.out.println("What is your age?\n");
    age = userInput.nextInt();
}//end if

答案 3 :(得分:1)

使用do-while:

boolean valid;
do {
     System.out.println("What is your age?\n");
     age = userInput.nextInt();
     valid = age > 1 && age < 120;
     if (!valid) {
       System.out.println("ERROR Please enter a valid age");
     }
}while (!valid);

答案 4 :(得分:0)

---->一次检查-您的输入是否为空或只是按下空格键

Scanner scnr = new Scanner(System.in);      
System.out.println("Enter a string: ");
String input = scnr.nextLine(); 

boolean isEmpty = input == null || input.trim().length() == 0;
if (isEmpty){
    System.out.println("Enter a string again: ");
    input = scnr.nextLine(); 
}

------>多次检查-您输入的内容为空还是仅按下空格键

 Scanner scnr = new Scanner(System.in);       
do {
    System.out.println("Enter a string: ");
    input = scnr.nextLine();
}
     while (input == null || input.trim().length() == 0);

重要提示: 在这种情况下,请不要忘记输入应该是静态字符串。

static String input=""; 

答案 5 :(得分:0)

//使用do-while循环,可以解决此问题。

    do {
        System.out.println("Enter a pin: ");
        pin = sc.nextInt();
    } while (pin != 12345);
    System.out.println("Welcome to program");