输入文字而非数字时出现Java错误

时间:2018-11-29 18:30:42

标签: java exception numbers output

我只是想让代码正常工作,如果代码再次输入答案,则输入文本或符号,而不是必需的整数:

import java.util.Scanner;

class timecalc {

int hrs = 0;
int min = 0;
static int hourflag = 0;
static int minflag = 0;
Scanner sc = new Scanner(System.in);

public int getHours() {

    try {
        hourflag = hourflag + 1;
        if (hourflag > 1) {
            System.out.println("Invalid month Please enter hours again:");
        }
        System.out.println("Enter month:");
        return hrs = sc.nextInt();

    } catch (InputMisMAtchException e) {
        System.out.println("entered invalid input " + e);
    }
}

已经审查了给出的答案,但无法获得可行的解决方案

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不会给您完整的代码,而只是给您一个提示或伪代码。作为练习,您可以根据需要实施它。

System.out.println("Enter month:");
while (true) {
    try {
        int min = sc.nextInt();
        break;
    } catch (InputMismatchException ex) {
        System.err.println("Invalid input, please enter again");
        sc.nextLine();  //  <----- advance the scanner
    }
}

这里的逻辑是循环,直到我们获得正确的输入。如果输入无效,则循环永远不会中断。

另外,我也建议您创建一个方法来获取正确的输入并分别从其他方法调用它。而不是到处都复制这种逻辑。