不了解扫描仪的不匹配/抛出错误

时间:2019-04-27 18:11:12

标签: java

我正在设置一个简单的每月计划。我已像处理其他作业一样设置了扫描仪,但这次扫描仪无法正常工作。我遇到了多个我不明白的错误。

我已经复制并粘贴了其他作业,但没有得到他们的错误,这很简单,所以我看不到我会搞砸什么。

import java.util.Scanner;

public class H3_ken {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int month;
        int year;

        System.out.println("Enter what month you would like to look up: ");
        month = input.nextInt();
        System.out.println("Enter what year: ");
        year = input.nextInt();

        System.out.println("You have chosen to look up the month of " + month + " in the year of " + year + ".");

    }

}

这是输入月份的输出。

Enter what month you would like to look up: 
January
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 H3_ken.main(H3_ken.java:12)

3 个答案:

答案 0 :(得分:2)

如果您实际上想输入一月,则需要一个字符串

String month = input.nextLine();

答案 1 :(得分:0)

如果要将字符串输入为月份,请使用$ print(test) >>> [array([[1], [3]]), array([[12], [5]]), ... etc.] 。 由于Java具有数据类型,因此您需要对其进行调整。 例如,您不能在Scanner.nextLine();中输入数字。

Java的Scanner类也是如此。 我知道您只是问过为什么您的String输入不起作用,但是这里有所有Scanner输入功能,因此下次您不会感到困惑:

String从用户读取布尔值(false或true)

nextBoolean()从用户读取一个字节值(介于-127和127之间的数字)

nextByte()从用户读取一个双精度值(精确的十进制数字)

nextDouble()从用户读取浮点值(double的较不精确版本)

nextFloat()从用户读取一个int值(-2147483647和2147483647之间的数字)

nextInt()从用户读取字符串值

nextLine()从用户读取一个长值(介于-9.223372e + 18和9.223372e + 18之间的数字)

nextLong()从用户读取一个短值(-32767和32767之间的数字)

答案 2 :(得分:-2)

如果您输入两个int值,并用至少一个空格隔开,则此代码可以正常工作!

您可能在年和月之间有一个符号(空格除外)