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的内容辅助,所以我很少键入整个方法。