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

如何在Java中正确格式化/嵌套while语句以验证输入数据类型和范围?

耿俊彦
2023-03-14

//创建一个扫描器对象以从用户扫描器scan=new scanner(system.in)读取输入;

  //Asks the user for the month of birth 
  System.out.print("Enter your Month of Birth: ");

  //Utilizes a while loop to verify input type and prompt re-enter if necessary 
  while (!scan.hasNextInt()) 
  {
    System.out.print("Invalid data type: Please enter an Integer: ");
    scan.next();
  }

  //If input is correct type, uses the input 
  BirthMonth = scan.nextInt();

  //Utilizes the while loop to verify and ask user to re-enter month input if incorrect
  while (BirthMonth<1 || BirthMonth >12)
    {
      System.out.print("Invalid Month. Re-Enter your Month of Birth: ");
      BirthMonth = scan.nextInt();
    }

当输入无效的范围时就会出现问题。程序提示用户重新输入指定范围内的适当整数。如果用户在此时重新输入一个无效的数据类型(例如ten),程序将崩溃。我相信这是因为一旦验证了正确的数据类型,程序就会继续验证范围,而不会重新检查正确的数据类型。

我认为通过嵌套while语句可以很容易地解决这个问题,这样每次输入新的输入时,程序都将重新检查数据类型。我无法正确设置while语句的格式/嵌套。有什么想法/暗示吗?

共有1个答案

冉锋
2023-03-14

你可以这样试试

int出生月份=0;while(true){if((!scan.hasnextint()){system.out.print(“无效的数据类型:请输入整数:”);scan.next();}else{Birthmonth=scan.nextint();if(Birthmonth<1 Birthmonth>12){system.out.print(“无效的月份。重新输入您的出生月份:”);scan.next();}else break;}}

 类似资料:
  • 只是想寻求一点帮助!我现在正在做一个体重转换项目。我已经让它正常工作了,但现在我正试图让它成为傻瓜式的,也就是说,如果用户输入的数值低于或超过某个范围(在本例中,我寻找的是0到450之间的KG),则会出现一条消息,告知错误,然后会提示用户再次输入其值。我可以用下面的代码实现这一点,但问题是,当用户输入一个有效值时,它不仅会打印有效输入的转换,还会打印之前不正确的值的转换。我附上了一个命令提示符的屏

  • 我想在用户使用Scanner输入时验证数据类型(在我的情况下是“int”)。 我在下面写了代码。 问题是,在第一个块中,若我给字符,程序终止。“如何在验证失败时保持循环运行??” 在第二个块中,如果我给出非整数,它将无限运行,并显示消息“仅输入整数值”。 从调试中,我得出结论,在不等待输入的情况下,它采用之前提供的最后一个非int值。 为什么编译器取最后一个值?? 有什么建议吗?

  • 下面提供了一个POJO,

  • 我正在尝试创建一个输入来验证输入是整数,并且它是正的。现在我有这个。我应该如何检查整数是否为正 编辑:我还需要它一直询问,直到你输入一个正整数

  • 数据格式 需求点 基础验证:必填、长度等验证、正则等 通过基础验证后,再验证DB类查询的项,比如唯一性 减少查询次数,比如示例中code字段都是从一个表中查询 基本验证,一般是通过注解来完成,那么涉及到DB查询的,也是通过自定义注解,还是在service层验证呢?或是有其他的什么手段,使其简洁明了。