为什么我得到InputMismatchException?

为什么我得到InputMismatchException?

到目前为止我有这个:

public double checkValueWithin(int min, int max) {
    double num;
    Scanner reader = new Scanner(System.in);
    num = reader.nextDouble();                         
    while (num < min || num > max) {                 
        System.out.print("Invalid. Re-enter number: "); 
        num = reader.nextDouble();                         
    }
    return num;}

还有这个:

public void askForMarks() {
    double marks[] = new double[student];
    int index = 0;
    Scanner reader = new Scanner(System.in);
    while (index < student) {
        System.out.print("Please enter a mark (0..30): ");
        marks[index] = (double) checkValueWithin(0, 30); 
        index++;
    }}

当我测试这个,它不能采取双数,我得到这个消息:

Exception in thread "main" java.util.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:909)at java.util.Scanner.next(Scanner.java:1530)at java.util.Scanner.nextDouble(Scanner.java:2456)at MarkingSystem.checkValueWithin(MarkingSystem.java:25)at MarkingSystem.askForMarks(MarkingSystem.java:44)at World.main(World.java:6)Java Result: 1

我该如何解决?


慕斯709654
浏览 665回答 3
3回答

MYYA

而不是使用点,如:1.2,尝试输入如下:1,2。

弑天下

由于您有手动用户输入循环,在扫描仪读取您的第一个输入后,它将通过回车/返回到下一行也将被读取;&nbsp;当然,这不是你想要的。你可以试试这个try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;...}&nbsp;catch&nbsp;(InputMismatchException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;reader.next();&nbsp;}或者,您可以在通过调用读取下一个双输入之前使用该回车reader.next()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java