当前位置: 首页 > 知识库问答 >
问题:

如何克服线程“main”java中的异常。util。输入不匹配异常

卢涵畅
2023-03-14

节目:


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.输入错误匹配异常:对于输入字符串:"9999999999"

输入您的选择:(选择0打印说明)异常线程主java.util.输入错误匹配异常:对于输入字符串:"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

共有1个答案

白祺然
2023-03-14

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

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

或者,或者另外,使用try catch块捕获异常并采取适当的操作(如向用户发送错误消息以重试)。这可能是正常用户输入检查的一部分。对用户的输入非常怀疑,因为有人可能会键入“Prithviraj是最棒的!” 而不是数字。

最后但并非最不重要的是,欢迎来到堆栈。

 类似资料:
  • 当我尝试在错误代码下面运行但得到错误时,我也使用了“givenArray[i]=sc.next();或givenArray[i]=sc.nextLine();”但仍然失败。我尝试了许多不同的方法,但仍然得到相同的错误。似乎扫描仪无法读取数组我需要此代码的帮助,请提前谢谢。 提供的输入:输入第一个数组的长度:4并单击Enter, 输入第二个数组的长度:4并单击Enter, 输入第一个数组:2,3,4

  • 我正在为一堂课做家庭作业。你必须计算这个月的工资。每次我尝试运行它时,它总是这样说:我如何修复它?线程“main”java.util.InputMismatchException中的异常 java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(扫描仪.java:1485) java.util.Scanner.ne

  • 我只是在练习java,目前我正在试验getter/setter方法和构造函数。java程序的工作原理是,我能够将用户输入存储到对象中,但当我将字符串“Dice and rollers”输入到gametype字符串变量中时,会出现一个挂起的未捕获异常InputMismatch错误。 有人能给我解释一下这是为什么吗? 另外,我在下面分享了我的源代码。 上面的是超类,下面的源代码是构造函数和getter

  • (更新的代码)无论出于什么原因,InputMismatchException的catch块无法正常工作。当代码抛出此错误时,catch块不会捕获它。有人知道为什么会这样吗?

  • 我做错了什么?? 错误是: 线程“main”java中出现异常。util。java上的NoTouchElementException 。util。扫描仪。通过java上的(Scanner.java:862) 。util。扫描仪。下一步(Scanner.java:1485) 在java。util。扫描仪。nextInt(Scanner.java:2117) 位于java。util。扫描仪。nextI

  • 我知道有很多关于这个例外的帖子,但是我不能解决这个问题。我认为必须编辑类路径来解决它。我试图在hadoop架构体系中运行一个名为远程地图的程序。这是我得到的错误。 Echo$CLASSPATH给出了一个空行 cat~/。bash_简介说 更新: $HADOOP_HOME $HADOOP_CLASSPATH 有人能帮我解决这个问题吗? 谢谢