java - 在 Java 中验证输入类型和整数范围

标签 java validation if-statement while-loop integer

这是我正在为一个更大的项目编写的代码片段:

import java.util.Scanner;

public static void getZip() {
   boolean shallNPass=true;
   int zip=0;

   System.out.print("Enter zipcode: ");
    while(shallNPass) {
        if(in.hasNextInt()) {
            zip = in.nextInt();
            if(zip>999 && zip<100000)
                zip = in.nextInt();
            else {
                System.out.println("Incorrect length for a zip. Try again");
                System.out.print("Enter zipcode: ");
                continue;
            }
            shallNPass = false;
        }
        else {
            System.out.println("Invalid Entry. Please use an integer.");
            System.out.print("Enter zipcode: ");
            continue;
        }
        shallNPass = false;
    }   shallNPass = true;  //RESETTING SHALLNPASS

    System.out.println(zip);
    //In actuality I continue to do another similar while loop similar after this
    //but I don't want to make this longer, so used a print
}

它基于我在这里找到的关于验证用户输入某种类型的值的解决方案。我只是更进一步,尝试验证输入的值是否在 1000 和 99999 之间。

我遇到的问题是,在输入正确长度的整数后,我必须再次输入它才能让程序继续执行下一行代码。我在验证类型时没有这个问题,只是在添加长度时才遇到这个问题。

我该如何解决这个问题?我已经尝试了各种 continue、break 和嵌套循环的技巧,但我只是没有看到它。

最佳答案

我在这里看到您再次要求:

if (in.hasNextInt()) {
    zip = in.nextInt(); // asking for input once
    if (zip > 999 && zip < 100000) {
        zip = in.nextInt(); // if validates, you're asking for input again
    } else {
        System.out.println("Incorrect length for a zip. Try again");
        System.out.print("Enter zipcode: ");
        continue;
    }
    shallNPass = false;
}

重构你的 if-else block :

if (zip <= 999 || zip >= 100000) {
    System.out.println("Incorrect length for a zip. Try again");
    System.out.print("Enter zipcode: ");
    continue;
}

如果未正确验证,则只需再次提示即可;因此,您不需要 else

关于java - 在 Java 中验证输入类型和整数范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52844050/

相关文章:

c++ - 一遍又一遍地验证文件时遇到问题

python - Python 中的有效数据验证

java - 在 switch case 语句中使用方法

java - 如何制作一个JAVA小程序自动运行?

java - JAVA中如何将String转换成Date时间格式?

javascript - 表单验证和清除

linux - 如何使用 IF/Then Bash 命令比较 2 个文件中的行数

java - 在java中使用循环回溯?

java - 数据库访问拒绝连接问题

java - 从 String 的 getchars() 方法创建的 char 数组的最后一个字符更改为不同的字符