使用的变量但是eclipse说他们不是吗?

时间:2014-01-18 23:42:16

标签: java variables

我在Java中进行一些输入处理,我遇到了麻烦。我有两个变量(xMove和zMove),我已经多次在代码中使用它们,但eclipse拒绝承认它们的使用。我有一种感觉,这就是导致我出现问题的原因所以请看看我能看出我做错了什么

    public void tick(boolean forward, boolean back, boolean left, boolean right, boolean turnLeft, boolean turnRight) {
        double xMove = 0.0;
        double zMove = 0.0;

        if (forward) {
            zMove++;
        }
        if (back) {
            zMove--;
        }
        if (left) {
            xMove++;
        }
        if (right) {
            xMove--;
        }
        if (turnLeft) {
            zMove++;
        }
        if (turnRight) {
            zMove++;
        }

    }

3 个答案:

答案 0 :(得分:6)

因为你没有使用它们!是的,你增加和减少它们,所以,是的,你认为这在某种意义上是变化的。但那你用它们做什么?您不会将它们分配给任何其他变量。您不从方法返回它们。他们现在在哪里实际上已经增加/减少了它们?没有。事实上,你并没有使用它们! : - )

尝试将它们分配给另一个变量。或者归还他们。或者分配一个类级变量。与他们做其他事情,这应该清理。

答案 1 :(得分:1)

根据可观察行为来思考:也就是说,您可以以某种方式从程序“外部”实际看到或衡量的行为。例如,System.out.println("hello")具有将"hello"打印到stdout的可观察行为。当然,有些行动不那么直接。鉴于此片段:

if (i < 0) {
    i++;
}
System.out.println(i);

......行动i++没有直接可观察到的结果。但是,如果您可以将程序置于i < 0状态,则可以观察打印数字大于程序所具有的数字的结果,如果不是if块的话

考虑到这一点,这段代码的可观察结果是什么:

public void tick1(boolean up) {
    int i = 1;
    if (up) {
        i++;
    }
}

vs,这段代码的可观察结果是什么:

public void tick2(boolean up) {
    int i = 1;
}

正如您可能看到的,他们的可观察结果是相同的:没有任何变化。即使i处于最大值且uptruetick1也不会抛出异常 - 它只会溢出i,然后执行没有结果。

事实上,如果你有:

public void tick3(boolean up) {
    // don't even declare i
}

......这第三种变体具有完全相同的可观察结果:仍未改变。

您的IDE正试图告诉您代码中可能存在以下两种情况之一:

  • 你打算使用变量(到一些可观察的结尾),但没有;在这种情况下,你应该使用它
  • 你不打算使用这个变量;在这种情况下,您可能只想通过删除它来简化代码

您发布的代码基本上处于相同的情况。

现在,如果您将tick1tick2简化为tick3,那么您的IDE可能会告诉您up未使用。考虑最后一个变体:

public void tick4() {
    // don't take any arguments or do anything
}

即使最后一个变体具有不同的编译时行为(它需要少一个arg),实际上与前三个具有相同的运行时行为

答案 2 :(得分:0)

尝试将变量存储在方法之外。然后,正如XWaveX所说,每次调用方法时,它们都不会被初始化为零。