InputMismatchException

InputMismatchException

我有以下Java代码:

Scanner input = new Scanner(System.in);
    try {
        System.out.println("Enter your name>>");
        String name = input.next();
        System.out.println("Enter your year of birth>>");
        int age = input.nextInt();

        System.out.println("Name:  " + name);
        System.out.println("Year of Birth:  " + age);
        System.out.println("Age:  " + (2012 - age));

    } catch (InputMismatchException err) {
        System.out.println("Not a number");
    }


当我输入带有空格的名称(例如“ James Peterson”)时,我会正确输出下一行(输入您的出生年份),然后立即输入InputMismatchException。该代码使用不带空格的单个名称。有什么我想念的吗?

最佳答案

    System.out.println("Enter your name>>");
    String name = input.next();
    System.out.println("Enter your year of birth>>");
    int age = input.nextInt();


Scanner,使用定界符模式将其输入分为令牌,默认情况下,该模式与空格匹配。

当您输入“ James Peterson”时,Scanner#next()将“ James”作为令牌并将其分配给String name,然后您执行Scanner#nextInt(),将“ Peterson”作为下一个令牌,但这不是可以被强制转换为int,因此,如果下一个标记与nextInt()正则表达式不匹配或超出范围,则InputMismatchException as InputMismatchException将抛出Integer

关于java - 扫描仪的InputMismatchException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16139337/

10-10 01:06