当前位置: 首页 > 知识库问答 >
问题:

如何实现int验证,因此输入只能是int并且介于min和max之间?

徐知
2023-03-14

我想知道如何验证这段代码,使输入只能是一个int,介于min和max之间?到目前为止,我只能停止输入小于1和使用任何最大值。但我似乎无法创建这样一个场景:如果用户输入的不是最大值和最小值(例如“AAA”)之间的任何值,它就会循环。我不断收到输入不匹配错误。任何帮助都将不胜感激!

private static int getUserOption(String prompt, int max) { 
    int h;
    do {
        Scanner sc = new Scanner(System.in);
        System.out.print(prompt);
        h=sc.nextInt();
        if(!sc.hasNextInt()) {
                System.out.println("Invalid option. Try again!:");
        }
    } while(h<1 || h>max);
    return h;    
}

共有3个答案

颛孙炜
2023-03-14

以下几点:

要检查输入是否小于最小值,只需将int min添加到方法签名中即可。

2、要检查输入是否为int,请捕获InputMismatchException。

修订后的守则将是:

private static int getUserOption(String prompt, int max, int min) { 
    int h;
    do {
        Scanner sc = new Scanner(System.in);
        System.out.print(prompt);
        try {
            h=sc.nextInt();
        } catch (InputMismatchException e) {
            System.out.println("Invalid option. Try again!:");
        }
    } while(h<min || h>max);
    return h;    
}
公良鸿畅
2023-03-14

您可以尝试此代码!

Scanner sc = new Scanner(System.in);
int number;
do {
System.out.println("Please enter a valid number: ");
while (!sc.hasNextInt()) {
   System.out.println("Error. Please enter a valid number: ");
   sc.next(); 
}
number = sc.nextInt();
} while (!checkChoice(number));

private static boolean checkChoice(int choice){
if (choice <MIN || choice > MAX) {     //Where MIN = 0 and MAX = 20
    System.out.print("Error. ");
    return false;
 }
 return true;
 }

参考:使用while循环和扫描仪验证输入

卓学智
2023-03-14

循环中断是因为nextInt()方法抛出异常,从而提前终止该方法。

一种选择是使用try/catch块捕获异常:

private static int getUserOption(String prompt, int max) { 
    int h = 0;
    do {
        Scanner sc = new Scanner(System.in);
        System.out.print(prompt);
        try {
            h=sc.nextInt();
        } catch (InputMismatchException e) {
            System.out.println("Invalid option. Try again!:");
        }
    }while(h<1 || h>max);
    return h;
}
 类似资料:
  • 假设我知道最小和最大id,我需要的是所有id都在最小和最大id之间。假设

  • 我正在制作一个TicTacToe游戏克隆,需要获得关于玩家想要将其选择放置在哪里的输入。 代码如下:

  • 如果您试图找出int是否介于数字之间,为什么不能这样做: 相反,你要做的是 好像有点开销。

  • 我试图验证输入,这样用户只允许输入一个有9位数字的int。我当前的代码负责前导零,任何大于9位的输入,但如果小于9位则不负责。 例如,它不应该允许用户输入int 123。 如果数字大于9,下面的代码将验证数字输入,但不考虑小于9的数字。 如果用户输入的整数小于9位。由于字符串的原因,它将填充剩余的插槽,并使其成为9位数字。格式(我只包含这个,以便它适用于前导零)。我不知道如何绕过前导零,以及确保输

  • 问题内容: 我正在通过其getter 获取对象中命名的值,如下所示。 比方说,目标是再 现在,我需要开发一个验证器,该验证器将验证应为整数类型,如果不是,则将引发异常,我也开发了如下所示的程序 现在的问题是,来自是一个整数,例如,但也可以是一个浮点数,例如。因此,在float的情况下会引发一个。 我如何才能使它们对于整数或浮点数都完美? 问题答案: 你可以这样使用: [-+]? -为标志。 [0-

  • 我从来没有用过, int main(int argc,const char*argv[] 对于大多数程序,我通常只使用两个单独的C文件在终端(使用mac)中编译,例如… gcc功能. c main. c 但是现在我需要使用int main(int Argc,const char*Argv[])...我只是不知道我是否正确使用它。这里有一些代码... 我在命令行中编译做… 海湾合作委员会主要。c输入