变量可能不会被初始化

时间:2015-11-22 18:15:47

标签: java variables exception

    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();命令,它总是以我最初输入的相同值重复。在此先感谢,抱歉没有以结构化的形式提出我的问题。

1 个答案:

答案 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.