【问题标题】:Use If to check integer使用 If 检查整数
【发布时间】:2018-04-20 20:32:17
【问题描述】:

我如何使用If 来检查输入必须是整数并且不能输入任何英文单词。

int numWeight = sc.nextInt();
if (numWeight == (int)numWeight) {
    ((Salad)menu[itemNum - 1]).setWeight(numWeight);

    System.out.println(menu[itemNum - 1].showOrderDetails());
    System.out.println("-------------------------------------------");
    System.out.println("Total No. of items ordered :");

    orderedItem[TtlOrderNum] = menu[itemNum - 1];
    TtlOrderNum += 1;

    Continue();
}
else {
    System.out.println("input must a be integer");
}

当我使用这段代码运行它并输入整数时,它显示:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at SaladAndDrinkOrderSystem.placeOrder(SaladAndDrinkOrderSystem.java:69)
    at TestSaladAndDrinkOrderSystem.main(TestSaladAndDrinkOrderSystem.java:23)

【问题讨论】:

标签: java


【解决方案1】:

您需要执行以下操作:

int numweight;
try {
    numweight = sc.nextInt();
    // Rest of your code here...
} catch (InputMismatchException e) {
    System.err.println("Please enter an integer");
}

为了不让java抛出输入不匹配异常。

【讨论】:

  • 这将在输入错误时无限循环。
  • @shmosel 我没有看到循环。它是如何无限“循环”的?
  • @smac89 我认为这个想法是循环直到输入有效。但你是对的,它没有明确提及。
  • @smac89 感谢您的编辑!我习惯了 Eclipse 的 Content Assist,所以我很少输入整个方法。
【解决方案2】:

请注意,如果您将非 Integer 值传递给您的 numWeight,您将引发输入不匹配异常 cannot convert from xxxx to int,因此我认为您可以使用 try-catch 假设您将收到一个 int 并且如果您不接收它,catch 会向您显示它必须是一个整数,如下所示:

    int numWeight;
    try {
        numWeight = sc.nextInt();       
        ((Salad)menu[itemNum - 1]).setWeight(numWeight);

        System.out.println(menu[itemNum - 1].showOrderDetails());
        System.out.println("-------------------------------------------");
        System.out.println("Total No. of items ordered :");

        orderedItem[TtlOrderNum] = menu[itemNum - 1];
        TtlOrderNum += 1;

        Continue();
    }
    catch(InputMismatchException e) {
         System.err.println("Input must be an Integer");
    }

这样,如果sc.nextInt() 不是整数,您将打印错误,说明它应该是。

但是,如果你想保持你原来的想法,检查值是一个整数,你可以使用instaceof 运算符,像这样

    Integer numWeight = sc.nextInt();
    if (numWeight instanceof Integer) {
        ((Salad)menu[itemNum - 1]).setWeight(numWeight);

        System.out.println(menu[itemNum - 1].showOrderDetails());
        System.out.println("-------------------------------------------");
        System.out.println("Total No. of items ordered :");

        orderedItem[TtlOrderNum] = menu[itemNum - 1];
        TtlOrderNum += 1;

        Continue();
    }
    else {
        System.out.println("input must a be integer");
    }   

请记住,如果您选择第二种方法,如果 st.nextInt() 不是 int,您将引发异常。

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 2017-01-10
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多