Scaner nextInt() - 当用户输入除整数之外的其他内容时,我应该处理此方法抛出的InputMismatchException吗?

时间:2016-04-23 00:01:13

标签: java java.util.scanner

在使用Scanner类的nextInt()方法时,如果抛出InputMismatchException,我应该通过catch块处理它吗? 它是一个运行时异常,但是由用户输入而不是程序员的错误引起。

这是我的代码。

package com.sample.programs;

import java.util.InputMismatchException;
import java.util.Scanner;

public class ScannerPractice {

    public static void main(String[] args) {

        readInteger();
    }

    private static void readInteger() {
        // Created a Scanner object
        Scanner input = new Scanner(System.in);

        // Display a prompt text
        System.out.println("Please enter an integer");

        // Accept the input from user
        int number;
        try {
            number = input.nextInt();
            // Display the output to user
            System.out.println("You entered: " + number);
        } catch (InputMismatchException exception) {
            System.err.println("You have entered wrong input. Please enter a number");
            // Log the stack trace
            readInteger();
        } finally {
            input.close();
        }

    }

}

2 个答案:

答案 0 :(得分:0)

是。最好处理用户错误的输入beacouse你无法控制或确保用户将正确对齐数据,你不能读取双精度数或带有readInteger()的字符串。
所以我会处理异常。 问候。

答案 1 :(得分:0)

不,您应在致电hasNextInt()之前致电nextInt()

异常真正意味着程序员错误,因为程序员在调用方法之前忘记检查有效性。

如果您想再次提示用户,请记得先丢弃错误的输入。

{{1}}