Java 虚荣者用过,但eclipse说他们';你不是吗?
我正在用Java做一些输入处理,我遇到了一些麻烦。我有两个变量(xMove和zMove),我在代码中使用了很多次,但是eclipse拒绝承认它们的使用。我有一种感觉,这是什么导致我的问题,所以请看一看,这样我就可以看到我做错了什么Java 虚荣者用过,但eclipse说他们';你不是吗?,java,variables,Java,Variables,我正在用Java做一些输入处理,我遇到了一些麻烦。我有两个变量(xMove和zMove),我在代码中使用了很多次,但是eclipse拒绝承认它们的使用。我有一种感觉,这是什么导致我的问题,所以请看一看,这样我就可以看到我做错了什么 public void tick(boolean forward, boolean back, boolean left, boolean right, boolean turnLeft, boolean turnRight) { double
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++;
}
}
因为你没有用它们!是的,你增加和减少它们,所以,是的,你认为这在某种意义上是变化的。那你怎么处理它们呢?您不会将它们分配给任何其他变量。您不能从方法返回它们。既然您已经增加/减少了它们,它们实际上会去哪里?不在哪里。事实上,你没有使用它们!:-)
尝试将它们分配给另一个变量。或者退回。或指定给类级别变量。对它们执行其他操作,这应该会清除。尝试将变量存储在方法之外。然后,正如XWaveX所说,它们不会在每次调用该方法时被初始化为零。考虑可观察到的行为:也就是说,您实际上可以从程序的“外部”以某种方式看到或测量行为。例如,
System.out.println(“hello”)
具有将“hello”
打印到stdout的可观察行为。当然,有些行动不那么直接。鉴于此片段:
if (i < 0) {
i++;
}
System.out.println(i);
vs,该代码的可观察结果是什么:
public void tick1(boolean up) {
int i = 1;
if (up) {
i++;
}
}
public void tick2(boolean up) {
int i = 1;
}
正如你可能看到的,他们的可观察结果是一样的:没有任何变化。即使i
处于其最大值且up
为true
,tick1
也不会抛出异常——它只会溢出i
,然后对结果不做任何处理
事实上,如果你有:
public void tick3(boolean up) {
// don't even declare i
}
。。。第三种变体具有完全相同的可观察结果:仍然没有任何变化
IDE试图告诉您代码中可能存在以下两种情况之一:
- 你想使用这个变量(为了某个可观察的目的),但没有;在这种情况下,您应该使用它
- 你不想使用这个变量;在这种情况下,您可能希望通过删除代码来简化代码
tick1
和tick2
以获得tick3
,IDE可能会告诉您up
未使用。考虑最后一个变型:
public void tick4() {
// don't take any arguments or do anything
}
尽管最后一个变量具有不同的编译时行为(只需少一个参数),但实际上与前三个变量具有相同的运行时行为。每次调用方法时,xMove和zMove都将初始化为零……您正在编辑它们,但不在任何地方读取它们的值。您在本地声明这些方法;因此,您声明的任何实例方法都会被隐藏。Eclipse也应该告诉您这一点。如果您不想返回它们的值,请将它们设置为全局值,如果它适合您的应用程序或您希望分别实现的目标。@Loreliers解决方案是要么使用它们的值,要么去掉它们。它们是干什么用的?