线程“main”中错误输入异常出错

int number = scanner.nextInt ();如果我放入括号if并写出错误的输入,则会出现问题,但效果很好。


但如果我不在 之外写它if,当我输入错误的输入时,它会给出以下错误


Exception in thread "main" java.util.InputMismatchException

at java.base/java.util.Scanner.throwFor(Scanner.java:939)

at java.base/java.util.Scanner.next(Scanner.java:1594)

at java.base/java.util.Scanner.nextInt(Scanner.java:2258)

at java.base/java.util.Scanner.nextInt(Scanner.java:2212)

at UserInput.main(UserInput.java:15)

代码:


import java.util.Scanner;


public class UserInput {


public static void main(String[] args) {

    int Sum=0, counter = 0,no=1;

    Scanner scanner;

    scanner = new Scanner(System.in);


    do {

        System.out.println("Enter number #" + no + " = ");


        boolean result =  scanner.hasNextInt();

        int number = scanner.nextInt();


        if(result == true)

        {

            counter = counter + 1;

            Sum = Sum + number;

            no = no+1;

        }

        else

        {

            System.out.println("Invalid Input");

        }

        scanner.nextLine();

        }while(counter<10);

    System.out.println("Sum = " + Sum );

    scanner.close();

    }

}


泛舟湖上清波郎朗
浏览 129回答 2
2回答

Smart猫小萌

如果 hasNextInt() 返回 false,则意味着扫描器的下一个标记(标记=“扫描”的对象的片段)不是整数。如果您现在调用方法 nextInt(),尽管下一个标记实际上不是 Integer,那么您将得到 InputMismatchException。正如 Scott 所说,通过将调用放在 if 语句中,您可以防止这种情况发生,因为您可以确保下一个标记是一个整数,并且您实际上可以调用 nextInt()。

神不在的星期二

通过将其放入,除非您知道有一个可以获取(即为真),否则if您不会调用。nextIntresult
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java