【问题标题】:How to overcome Exception in thread "main" java.util.InputMismatchException如何克服线程“主”java.util.InputMismatchException中的异常
【发布时间】:2021-06-23 19:33:03
【问题描述】:

计划:


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:对于输入字符串:“9999999999” 在 java.base/java.util.Scanner.nextInt(Scanner.java:2264) 在 java.base/java.util.Scanner.nextInt(Scanner.java:2212) 在 JavaExercise1.main(JavaExercise1.java:52)

进程以退出代码 1 结束

【问题讨论】:

  • 为防止出现异常,请始终在调用nextInt()之前调用hasNextInt()

标签: java exception inputmismatchexception thread-exceptions


【解决方案1】:

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

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

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

最后但同样重要的是,欢迎来到 Stacks。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多