我的代码有问题。我认为我的问题很简单,但我编译了3天没有取得好成绩。我有三张照片。它们每次都被放在屏幕上一对一。如果图像的一侧是向上,向下,向右或向左,用户可从4按钮中选择。此外,我想了解用户是否错了,然后我会计算错误。当用户犯3个错误时,游戏将停止。我在下面显示了代码。如果您有任何好主意,请帮助我。 问题是,在第一个循环中,向右运行。它在第一个if。之后它执行循环然后它不会转到第二个if。 如果它更有帮助,一些细节: 我想制作一个程序,它将向用户显示一个图像。这个图像有4面(上,下,右,左)。当图像处于“上方”时,用户必须点击向上按钮,当图像处于“下方”,用户必须单击向下按钮等。用户最多可以执行3次错误。程序首先显示右侧图像,如果用户点击右键,我想在左侧显示“第二张图像”。如果用户不在左侧,那么我想添加一个错误(错误++)和之后它显示了第三张图像在上方等。我希望它更有帮助理解。如果你不能请告诉我。 我的程序是在Netbeans,java。 谢谢
public void actionPerformed(ActionEvent e)
{
while(errors<3)
{
image.setIcon(createImageIcon("visual1" + e.getActionCommand() + ".PNG"));
if (k==1)
{
if(e.getSource() == right_button)
{
image.setIcon(createImageIcon("visual2" + e.getActionCommand() + ".PNG"));
}
}
else if ( k==2 )
{
if(e.getSource() == left_button )
{
image.setIcon(createImageIcon("visual3" + e.getActionCommand() + ".PNG"));
}
}
else if (k==3 )
{
if(e.getSource() == up_button)
{
System.out.print("if3");
}
}
else
{
errors++;
}
k=k+1;
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我在while循环中看到的一个问题是它有陷入无限循环的风险,因为用作退出条件的变量只在某个时间块中更新。我认为你应该重新安排你的逻辑:
如,
// somewhere in your code create your icons
Icon rightIcon = ......;
Icon leftIcon = .....;
Icon upIcon = .....;
Icon downIcon = .....;
// elsewhere in your code
public void actionPerformed(ActionEvent e) {
if (errors >= 3) {
// notify user of error
return; // end this method
}
// check if current icon matches image
// if so, change icon
// if not increment error
}
请注意,此处enum Direction {UP, DOWN, LEFT, RIGHT}
和Map<Direction, Icon>
可能会有所帮助。