当输入文本而不是数字时发生Java错误



我只是想让代码工作,如果输入了文本或符号,而不是所需的整数:,代码会再次要求答案

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);
}
}

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

有什么想法吗?

我不会给你完整的代码,只是一个提示或psuedo代码。作为一项练习,您可以根据自己的要求来实施它。

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
}
}

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

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

最新更新