如何克服线程"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. Additionn2. Substractionn3. Multiplicationn4. Divisionn5. 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打印说明(线程中的异常";主";java.util.InputMismatchException:对于输入字符串:"9999999999";位于java.base/java.util.Scanner.nextInt(Scanner.java:2264(位于java.base/java.util.Scanner.nextInt(Scanner.java:2212(在JavaExercise1.main(JavaExercise 1.java:52(

进程结束,退出代码为1

您的输入9999999999大于Java中最大的int2147483647

如果要处理如此大的数字,请将scan.nextInt更改为scan.nextLong,并将相应的整数更改为long

或者,使用try-catch块来捕获异常并采取适当的操作(比如向用户发送错误消息以重试(。这可以是正常用户输入检查的一部分。对用户输入要非常怀疑,因为例如,有人可能会键入"Prithviraj is the greatest!"而不是数字。

最后但同样重要的是,欢迎来到斯塔克。

最新更新