![](/img/trans.png)
[英]Exception in thread “main” java.util.InputMismatchException:
[英]How to overcome Exception in thread “main” java.util.InputMismatchException
程序:
import java.util.Scanner;
public class JavaExercise1 {
static int sum, num1, num2;
static Scanner scan = new Scanner(System.in);
public static void add(){
System.out.print("Enter first number to be added: ");
num1 = scan.nextInt();
System.out.print("Enter second number to be added: ");
num2 = scan.nextInt();
sum=num1+num2;
System.out.println(num1+" + "+num2+" = "+sum);
}
static void sub(){
System.out.print("Enter first number to be substracted: ");
num1 = scan.nextInt();
System.out.print("Enter second number to be substracted: ");
num2 = scan.nextInt();
sum=num1-num2;
System.out.println(num1+" - "+num2+" = "+sum);
}
static void mul(){
System.out.print("Enter first number to be multiplied: ");
num1 = scan.nextInt();
System.out.print("Enter second number to be multiplied: ");
num2 = scan.nextInt();
sum=num1*num2;
System.out.println(num1+" x "+num2+" = "+sum);
}
static void div(){
try{
System.out.print("Enter first number to be divided: ");
num1 = scan.nextInt();
System.out.print("Entr second number to be divided: ");
num2 = scan.nextInt();
sum=num1/num2;
System.out.println(num1+" / "+num2+" = "+sum);
}catch(Exception e){
System.out.println("\nException occured...");
System.out.println(e);
}
}
static void printInstructions(){
System.out.println("1. Addition\n2. Substraction\n3. Multiplication\n4. Division\n5. Exit");
}
public static void main(String[] args) {
int ch;
do{
System.out.println("\nEnter your choice: (Choose 0 to print instructions)");
ch = scan.nextInt();
switch(ch){
case 0: printInstructions();
break;
case 1: add();
break;
case 2: sub();
break;
case 3: mul();
break;
case 4: div();
break;
case 5: break;
default:
System.out.println("Invalid choice....");
}
}while(ch!=5);
}
}
當我輸入更大的數字時會引發線程異常(線程“main”java.util.InputMismatchException 中的異常)
輸出:
輸入您的選擇:(選擇 0 打印說明) 4 輸入第一個要被除數的數字:9999999999
發生異常... java.util.InputMismatchException:對於輸入字符串:“9999999999”
輸入您的選擇:(選擇 0 打印說明)線程“main”中的異常 java.util.InputMismatchException:對於輸入字符串:java.base/java.util.Scanner.nextInt(Scanner.java:2264) 處的“9999999999” java.base/java.util.Scanner.nextInt(Scanner.java:2212) 在 JavaExercise1.main(JavaExercise1.java:52)
進程以退出代碼 1 結束
您的輸入9999999999
大於 Java 中最大的int
: 2147483647
。
如果要處理如此大的數字,請將scan.nextInt
更改為scan.nextLong
並將相應的整數更改為long
。
或者或另外,使用try-catch
塊來捕獲異常並采取適當的操作(如向用戶發送錯誤消息以再次嘗試)。 這可以是正常用戶輸入檢查的一部分。 對用戶輸入非常懷疑,因為有人可能會輸入"Prithviraj is the greatest!"
例如,而不是數字。
最后但並非最不重要的一點,歡迎來到 Stacks。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.