日期:2014-05-20  浏览次数:20620 次

一个让我觉得非常怪异的问题,为什么,为什么!
问题描述:下面是我的代码,以下代码是不能跑起来的,但不影响我要问的东西,我会尽量说清楚,恳请前辈大哥帮忙;

public static final int PaoSpeed = 3;
private enum Flying {STOP,FLY};/*变量中定义一个枚举类以及构造出它的一个对象f,并将其初始化为Flying.STOP;*/
public Flying f = Flying.STOP;

用一个while死循环来不断调用feixing()方法;

public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key){ //当我按下键盘的J键,调用keyPressed()方法然后把f赋值为Flying.FLY;
case KeyEvent.VK_J:
f = Flying.FLY;
System.out.println(f); //打印出来的没错,是Fly;
break;
}
}

public void feixing (){
System.out.println(f); //但是这里不断打印出来STOP,上面明明已经将f赋值FLY了,为嘛会这样?救命。
  switch(f){
case FLY:
x += PaoSpeed;
break;
}
}




------解决方案--------------------
你的Flying 是String 类型的吧!

当你调用了keyPressed这个方法,按下F后,f的值改成了FLY
当时当这个方法调用完毕后,f的值将会恢复为STOP,所以在下面的方面里面会一直是STOP


------解决方案--------------------
看起来程序没问题,估计是在别处又修改了f的值
代码不全,无法判断
------解决方案--------------------
用StringBuffer 这个数据类型就可以了