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

标签 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 中编译,因为“局部变量 jobNum 可能尚未初始化”。 Eclipse的建议是将初始声明更改为int jobNum = 0; 。不过,这让我很困扰,因为如果 jobNum 在没有初始化的情况下通过了 while 循环,那将很糟糕,并且将其设置为 0 可能会使该错误很难找到(尤其是在这里,因为 0 是有效的作业索引)。如果它未初始化,我想事情会很快崩溃,并且我会找到错误。现在,我可以将其初始化为 -1,但很容易想象一个所有整数都有效的类似场景。对于这个例子来说并不重要,但是为了将来编写更好的代码......

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

  1. 为什么 Eclipse 强制我这样做?这看起来像是一个相当严厉的编译器错误。
  2. 正确的编码方法是什么,不会引入我可能很容易误认为输入的默认值?

最佳答案

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

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

关于java - Eclipse 要求我初始化局部变量似乎是一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42529318/

相关文章:

c - "The C compiler "/usr/bin/cc "is not able to compile a simple test program."

java - 如何检查一个 ArrayList 是否包含另一个 ArrayList 的任何元素?

c++ - Linux 中 Eclipse C/C++ 的 Makefile

c++ - 调试时找不到 "arm-elf-g++"

java - 使用 URL 参数的 JSF Managed Bean 方法调用

java - 无法使用 JPA 工具从数据库生成实体

java - eclipse : Could not open editor after Eclipse PDT upgrade to version 5. 0.1.201706221952

java - JSP/Jquery - 组合框下拉列表从数据库中动态加载图像

java - 错误 : Could not find or load main class Main (unix)

java - 在父类(super class)和接口(interface)中覆盖相同的方法