当前位置: 首页 > 知识库问答 >
问题:

Eclipse要求我初始化局部变量似乎是个错误[重复]

羊柏
2023-03-14
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,可能会很难找到该bug(尤其是在这里,因为0是一个有效的作业索引)。如果它没有初始化,我想事情会很快崩溃,我会找到bug。现在,我可以将其初始化为-1,但很容易想象一个类似的场景,其中所有int都是有效的。对于这个例子来说这并不重要,但是为了将来编写更好的代码。。。

总之,我有两个问题:

  1. 为什么Eclipse会强迫我这么做?这似乎是一个相当严重的编译器错误

共有1个答案

林英朗
2023-03-14

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

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

 类似资料:
  • 我对python相当陌生,我想知道局部变量是如何工作的。让我们从一个简单方法的示例开始: 让我们假设local_dict像一种常量变量一样使用。这里有一个问题:它是在每次调用do_sth()时创建的,还是创建一次并保存在do_sth()内部的某个地方?

  • print语句会导致以下编译时错误, 局部变量f可能尚未初始化 如果Java中的原语已经有一个默认值(float=0.0f),为什么我需要定义一个呢? 所以,这是有效的 谢谢大家!

  • 我没有发现这段代码中有任何错误,但是eclipse告诉我变量没有初始化。这只是一个警告,但编译后也不起作用。我根本找不到错误,这段代码是100%正确的。请注意,此代码的结构不容易更改,因为下面提供的代码经过简化,因此您没有那么多要阅读的内容;-)

  • 考虑到下面的代码,为什么即使优惠券、偏移量和基已在if语句中初始化,编译器仍会在第5行抱怨?由于“percent”变量的默认值为0.0,因此if语句将运行并设置这些值。

  • 我有以下方法: 当编译我的代码时,我得到这个编译错误:< code >变量' total '可能没有初始化 我的代码的哪一部分触发了错误?

  • 下面的示例类无法编译: 此代码的编译错误消息是: 但是,对于包含以下方法的类,Java不会生成任何错误消息: 关于初始化及其要求,为什么Java对最终实例变量和最终局部变量的处理不同?谢谢