如何在Java中检查用户输入验证?

时间:2015-09-14 20:39:44

标签: java validation if-statement input

我正在制作一个简单的程序,要求用户在0-19之间输入五个数字。我想在每个数字后添加一些东西(比如if语句),以确保它在该范围内。如果没有,程序应该说“请再次阅读说明”,然后是System.exit(0)。这是相关代码的一部分:

System.out.println("Please enter 5 numbers between 0 and 19");
System.out.print("1st Number: ");
userNum1 = scan.nextInt();
System.out.print("2nd Number: ");
userNum2 = scan.nextInt();
System.out.print("3rd Number: ");
userNum3 = scan.nextInt();
System.out.print("4th Number: ");
userNum4 = scan.nextInt();
System.out.print("5th Number: ");
userNum5 = scan.nextInt();

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您可以在每个输入之后添加它,但是您可能想要考虑将此逻辑放入其自己的方法中,然后您可以重用代码并使用类似validateInput(userNum1);的方法调用它。

val替换为您的实际变量名称。

if (val < 0 || val > 19) {
    System.out.println("please read the instructions again");
    System.exit(0);
}

答案 1 :(得分:1)

这段代码将为您提供帮助,我添加了一些证券:

public static void main(String[] args) {
    int count = 1;
    Scanner scan = new Scanner(System.in);
    List<Integer> myNumbers = new ArrayList<Integer>();
    System.out.println("Please enter 5 numbers between 0 and 19");
    do {
        System.out.println("Enter Number "+count+" ");
        if(scan.hasNextInt()){
            int input = scan.nextInt();
            if(input >= 0 && input <= 19){
                myNumbers.add(input);
                count++;
            }else{
                System.out.println("Please read instructions again");
                System.exit(0);
            }
        }else{
            scan.nextLine();
            System.out.println("Enter a valid Integer value");
        }
    }while(count < 6);

    /* NUMBERS */
    System.out.println("\n/** MY NUMBERS **/\n");
    for (Integer myNumber : myNumbers) {
        System.out.println(myNumber);
    }
}

希望有所帮助

答案 2 :(得分:1)

首先,我将创建一个迭代N次的for循环,其中N是您要求的数字数(在您的情况下为5)。想象一下你的50个数字的例子;这将是非常重复的。

然后,当您在for循环中获得0001-01-01 12:00:00 AM的每个数字时,您可以根据需要进行验证:

scan.nextInt()

此外,当他们输入一个超出范围的数字时,你可以将你的逻辑放在一个while循环中,这样它就会重新提示他们输入数字。这样,用户不必重新启动应用程序。类似的东西:

if (userNum < 0 || userNum > 19) {
    // print error message, and quit here
}

然后根据用户是否输入有效数字,根据需要设置boolean runApplication = true; while(runApplication) { // do your for-loop with user input scanning } 标志。

答案 3 :(得分:0)

由于您已经知道用户希望输入多少个数字,我建议您使用for循环。它使您的代码更加优雅,您可以通过更改循环的结束条件来添加任意数量的条目。看起来很长的唯一原因是因为数字1,2,3都以不同的格式结束,即最终的thcoRD,但其余的数字都以TH结尾。这就是为什么我必须在循环中实现一些if else语句。

为了解释代码,每次循环时它首先告诉用户他/她输入的数字的计数。然后每次循环循环时都会更新numEntry,因此您不需要为多个变量分配多个输入。继续更新相同的变量更有效。如果用户输入的输入小于0或者大于19,则系统会在出现错误消息后退出。

    System.out.println("Please enter a number between 0 and 19");
    Scanner scan = new Scanner(System.in);
    for(int i = 1; i <=5; i++){
    if(i == 1)
        System.out.println("1st Number");
    else if(i == 2)
        System.out.println("2nd Number");
    else if(i == 3)
        System.out.println("3rd Number");
    else
        System.out.println(i + "th Number");
    int numEntry = scan.nextInt();
    if(numEntry < 0 || numEntry > 19){
        System.out.println("Please read instructions again.");
        System.exit(1);
    }