【问题标题】:Netbeans 7.3 misreports an "Unused assignment" hintNetbeans 7.3 误报“未使用的分配”提示
【发布时间】:2013-10-01 03:17:09
【问题描述】:

Netbeans 7.3.1 IDE 在以下程序的指示行中说“从未使用分配的值”:

public class JavaTest {
    static int f() {
        return Math.random() < 0.9 ? 0 : 1;
    }

    static int g() {
        return Math.random() < 0.2 ? 0 : 1;
    }

    public static void main(String[] args) {
        int ret;
        while ((ret = f()) == 0) {  // Unused assignment???
            ret = g();
            if (ret != 0)
                System.out.println(ret);
        }

        System.out.println(ret);
    }
}

我猜这是 Netbeans 中的一个错误,但有人可以确认他们以前是否见过它?

【问题讨论】:

  • 这可能是因为您为ret设置了值,但您在再次设置之前从未使用过该值,因此while((ret = f()) == 0)while(f() == 0)之间没有区别。
  • 你说得对,这是一个错误,但事实上这是愚弄 Netbeans 和这里的几个人(包括我自己)应该建议使用更清晰的代码。我会为每个函数的返回使用不同的变量。
  • 谢谢大家。 madth3 说得好,虽然 Netbeans 有错误,但要欺骗几个人以及 Netbeans 就足够棘手了,所以我将通过使用不同的变量来澄清它。

标签: netbeans


【解决方案1】:

编辑: 好点,很抱歉我没有早点看到它。我现在同意你的看法,我可以用你在 Eclipse Juno SR2 中的确切代码确认没有关于未使用分配的警告。 Netbeans 出错了!

原文: Netbeans 是正确的...您在该行之后立即为 ret 分配一个新值,因此您不妨将 f() 与 0 进行比较,例如while(f() == 0)

【讨论】:

  • 我认为情况并非如此。你说我马上给ret赋值,但是只有f()返回0时才会这样, 然后在 main() 退出之前打印。因此,它不是未使用的分配。
猜你喜欢
  • 2013-05-14
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多