【问题标题】:Input numeric to proceed to next line but exception when entering a non numeric输入数字以继续下一行,但输入非数字时出现异常
【发布时间】:2020-06-24 00:44:27
【问题描述】:

我是编程新手,但我仍然在思考一些事情。

差不多,我正在尝试添加一个允许输入例如文本“ABC”的行,并且它不会产生异常,而是请求输入数值“123”。

正如我所说,我是编程新手,我尝试了很多尝试,但我认为因为我使用“int age = input.nextInt();”它阻止我在 if 语句中输入文本。我不太确定。

这也是一个作业。如果您需要了解更多信息,请告诉我。我确实想学习,虽然我也不知道该看什么。等等

   System.out.println("Please enter your age:");

   String bracket= "";

   int age = input.nextInt();

   if (age <= 20){
     bracket = "20 & under";
   }
   if (age > 20 && age <= 35){
     bracket = "21-35";
   }
   if (age > 35 && age <= 70){
     bracket = "36-70";
   }
   if (age > 70){
     bracket = "71 & over";
   }

【问题讨论】:

标签: java if-statement input int numeric


【解决方案1】:

您需要一个循环,您需要在尝试阅读之前检查您的Scanner 是否有int,并且您可以使用一些else(s) 来简化您的if 链。喜欢,

String bracket = "";
while (true) {
    System.out.println("Please enter your age:");
    if (input.hasNextInt()) {
        int age = input.nextInt();
        if (age < 20) {
            bracket = "20 & under";
        } else if (age < 36) {
            bracket = "21-35";
        } else if (age < 71) {
            bracket = "36-70";
        } else {
            bracket = "71 & over";
        }
        break;
    } else {
        input.nextLine();
    }
}

【讨论】:

  • 非常感谢。我试过了,效果很好。你介意多花点时间解释一下原因吗?
  • @wallace 为什么?您需要检查Scanner 是否有int (if (input.hasNextInt())),如果有,然后age = input.nextInt(); 否则,使用input.nextLine();int 的输入不是
  • 我明白了。谢谢。
  • @wallace 非常欢迎您来到 StackOverflow。不要忘记采取tour
  • 我对代码有一个快速的关注,但不知道如何解决它。当输入一个不满足条件的初始输入并重复请求一个数字的年龄时,它会这样做两次,仅在这种情况下,并且所有其他不正确的输入只是一个句子。你知道为什么会这样吗?谢谢!
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 2018-03-25
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 2018-01-30
相关资源
最近更新 更多