1

我正在用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

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

4

6 回答 6

6

替换ifwhile

BAM,问题解决了。

于 2013-09-10T14:41:49.523 回答
3

使用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;
}
于 2013-09-10T14:42:03.023 回答
2

使用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);
于 2013-09-10T14:47:38.743 回答
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
于 2013-09-10T14:42:35.313 回答
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=""; 
于 2018-10-23T01:02:49.570 回答
0

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

    do {
        System.out.println("Enter a pin: ");
        pin = sc.nextInt();
    } while (pin != 12345);
    System.out.println("Welcome to program");
于 2018-12-12T15:42:09.073 回答