【发布时间】:2015-02-05 12:13:27
【问题描述】:
在这段代码中:
public class KeyManager implements KeyListener{
public void keyPressed(KeyEvent e) {
boolean spacePressed = false;
if(e.getKeyCode() == KeyEvent.VK_SPACE){
if(spacePressed == false){
spacePressed = true;
System.out.println("Hello world");
}
}
}
我试图让空间只打印一次“Hello world”,然后将 spacePressed 切换为 true,从那时起不再做任何事情。
使用系统打印我发现它确实在我按下它后将spacePressed 更改为true,但由于某种原因,我可以再次按下空格并再次打印出“Hello world”。
简而言之,编译器似乎忽略了 if 语句并继续阅读,这是不应该发生的。
【问题讨论】:
-
spacePressed 变量应该像您构建代码的方式一样充当局部变量,并且每次都会初始化为 false,然后设置为 true,然后因为它是本地变量而被销毁。
标签: java if-statement keylistener