while (a != true) {
try {
input = user_input.nextInt();
calculate(input);
a = true;
} catch (InputMismatchException ex) {
user_input.next();
System.out.println("fdsa");
} catch (RangeException ex) {
}
}
if (input == 1)
我的问题是我抓住了我需要的例外,如果输入是< 1和> 4或字符串并且我打印错误消息并且程序再次要求我输入1到4之间的数字但是当我开始实现异常时,我的输入变量if表示它可能没有被初始化。这是我第一次实施例外,而且我很难过。
(编辑)我解决了上一个问题,但是当我在1到4之间键入一个int时,我遇到了一个新的无法解决的扫描程序问题。这部分代码在另一个while循环中,当前是无限的,因为它不会让我再次输入input = user_input.nextInt();命令,它总是以我最初输入的相同值重复。在此先感谢,抱歉没有以结构化的形式提出我的问题。
答案 0 :(得分:0)
如果设置了input
,编译器无法解决循环退出的唯一方法。最简单的解决方案是给它一个初始值,或者你可以像这样重构你的循环。
int input;
while (true) {
try {
input = user_input.nextInt();
calculate(input);
break;
} catch (InputMismatchException | RangeException ex) {
user_input.next();
}
}
if (input == 1) // ok now.