gpt4 book ai didi

java - 将 void 相互放入时出错(编译器无法编写代码)

转载 作者:行者123 更新时间:2023-12-01 14:04:10 25 4
gpt4 key购买 nike

所以我一直在尝试做一些简单的编码:用 WASD 键移动蓝色方 block ,

public static void main (String args[])
{
new MoveWASD();
}

public MoveWASD()
{
super("Use-WASD-to-Move");
setSize(800, 450);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void paint(Graphics g)
{
g.setColor(Color.WHITE);
g.fillRect(0, 0, 800, 450);

g.setColor(Color.BLUE);
g.fillRect(Location[0], Location[1], 20, 20);
System.out.println("PRINTEDs");
}

public class MoveDetection extends Thread implements KeyListener
{




@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}


@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}



public void keyPressed(KeyEvent arg0)
{


public void run()
{
while(true)
{
try
{


if(event.getKeyChar() == 'w')
{
Location[1] = Location[1] - 20;
Repeat = true;
}
else if(event.getKeyChar() == 'd')
{
Location[0] = Location[0] + 20;
}
else if(event.getKeyChar() == 's')
{
Location[1] = Location[1] + 20;
}
else if (event.getKeyChar() == 'a')
{
Location[0] = Location[0] - 20;
}
else
{
Location[0] = Location[0];
}

Thread.sleep(75);
}
catch(Exception e)
{
break;
}
}

}

}


}

但是,当将一个静态空隙放入另一个中时会出现错误,箭头(上面)指向我的两个错误:一个在 run 下,其中显示: 标记“void”上的语法错误,@预期另一个位于 run() 的末尾括号下,其中表示: 语法错误,插入“EnumBody”来完成BlockStatements另外,当我将“System.out.write()”放在我的 moveDetection 类下的任何“void”下时,它不会显示,这可能意味着它没有到达它......由于我刚刚开始编码,我不知道这意味着什么,有什么帮助吗?

最佳答案

在 Java 中,你不能在其他方法中嵌套方法,也许可以阅读 this .

您需要从另一个方法调用该方法

public void run(KeyEvent event) {
//do stuff
}
public void keyPressed(KeyEvent event) {
run(event);
}

也许更重要的是,事件处理程序中有一个 while(true) 。这将导致 EDT 被阻止,从而导致 GUI 卡住。

我没有看到 while 循环的任何原因。每次按下按键时都会触发按键事件。

关于java - 将 void 相互放入时出错(编译器无法编写代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19067208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com