Java 使用If检查整数

Java 使用If检查整数,java,Java,如何使用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("------------------

如何使用
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");
}
当我使用此代码运行它并键入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)

您需要执行以下操作:

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

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

请注意,如果将非
整数
值传递给
numWeight
,将引发输入不匹配异常
无法从xxxx转换为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,您将引发一个异常。

您认为
如果(numWeight==(int)numWeight)
将做什么?输入
字符串
表示
int
if
-子句未引发此
异常
。if(numWeight instanceof Integer)的可能重复项将在错误输入时无限循环。@shmosel我没有看到循环。它是如何无限地“循环”的?@smac89我认为这个想法是循环直到有效的输入。但是你说得对,没有明确提到。@smack89谢谢你的编辑!我习惯于Eclipse的内容辅助,所以我很少键入整个方法。