Eclipse要求我初始化局部变量似乎是一个错误

时间:2017-03-01 10:31:48

标签: java eclipse

private int getJobIndex() {
    int jobNum;
    boolean inputValid = false;
    while (!inputValid) {
        jobNum = getIntegerInput("Please select a job to work on: ");
        if (jobNum < 0 || jobNum >= game.getNumberOfJobs()) {
            System.out.println("Invalid selection. Please choose a valid job.");
        }
        else {
            inputValid = true;
        }
    }
    return jobNum;
}

这是一个有点理论上的问题,所以请耐心等待。在上面的代码中,我获取用户输入,在循环中验证它并返回它。上面编写的代码不能在Eclipse中编译,因为&#34;本地变量jobNum可能尚未初始化&#34;。 Eclipse的&#39;建议是将初始声明更改为int jobNum = 0;。但这让我感到困扰,因为如果jobNum在没有初始化的情况下越过了while循环,那就太糟糕了,并且设置为0可能会使该bug很难找到(特别是在这里,因为0是一个有效的作业索引)。如果它没有初始化,我想事情会很快破裂,我会发现这个错误。现在,我可以将它初始化为-1,但很容易想象一个类似的情况,其中所有的int都是有效的。这个例子并不重要,但是为了将来编写更好的代码......

总而言之,我有两个问题:

  1. 为什么Eclipse强迫我这么做?这似乎是一个相当沉重的编译器错误。
  2. 对此进行编码的正确方法是什么,并没有引入我可能容易误认为输入的默认值?

1 个答案:

答案 0 :(得分:1)

while (!inputValid) {不满足Java的可达性测试,或其他方式。

因此,在这种情况下,Java需要一个错误。