我使用了if语句来更改我的hangman应用程序的图像,到目前为止它可以工作但是当我想在错误达到6时显示一条消息时,它会在每个错误中以某种方式打印You Lose
。
if(wrong >= 1)
icon = new ImageIcon("hangman1.jpg");
if(wrong >= 2)
icon = new ImageIcon("hangman2.jpg");
if(wrong >= 3)
icon = new ImageIcon("hangman3.jpg");
if(wrong >= 4)
icon = new ImageIcon("hangman4.jpg");
if(wrong >= 5)
icon = new ImageIcon("hangman5.jpg");
if(wrong >= 6)
icon = new ImageIcon("hangman6.jpg");
JOptionPane.showMessageDialog(null, "You Lose");
label.setIcon(icon);
答案 0 :(得分:5)
在这种情况下,您需要在代码周围使用括号,否则只有第一行是条件的一部分。
此外,你的条件全部在错误的时候被执行> 1.使用==和/或else / if构造。
if (wrong == 1) {
...
}
else if (wrong == 2) {
...
}
...
else if(wrong >= 6)
{
icon = new ImageIcon("hangman6.jpg");
JOptionPane.showMessageDialog(null, "You Loose");
}
答案 1 :(得分:4)
问题是您没有在每个if语句中运行的代码周围使用大括号{ }
。没有大括号,只运行每个if语句后的行。
//icon is always hangman plus the number wrong
icon = new ImageIcon("hangman" + wrong + ".jpg");
// only show the message dialog after 6 wrong guesses
if(wrong >= 6){
JOptionPane.showMessageDialog(null, "You Lose!");
}
label.setIcon(icon);
答案 2 :(得分:0)
您已经得到了问题的答案,遗漏了{}
。但请阅读switch case
试试这个:
switch(wrong) {
case 1: icon = new ImageIcon("hangman1.jpg");
break;
case 2: icon = new ImageIcon("hangman2.jpg");
break;
//and so on...
case 6: icon = new ImageIcon("hangman6.jpg");
JOptionPane.showMessageDialog(null, "You Loose");
break;
}
你不应该使用太多else if
。它会降低代码的可读性。
答案 3 :(得分:0)
因此弄明白为什么和它因为我的标签不知道它已被新图像更新,这要归功于大括号的想法
if(wrong == 1){
icon = new ImageIcon("hangman1.jpg");
label.setIcon(icon);
}
else if(wrong == 2)
{
icon = new ImageIcon("hangman2.jpg");
label.setIcon(icon);
}
else if(wrong == 3)
{
icon = new ImageIcon("hangman3.jpg");
label.setIcon(icon);
}
else if(wrong == 4){
icon = new ImageIcon("hangman4.jpg");
label.setIcon(icon);
}
else if(wrong == 5){
icon = new ImageIcon("hangman5.jpg");
label.setIcon(icon);
}
else if(wrong == 6){
icon = new ImageIcon("hangman6.jpg");
label.setIcon(icon);
JOptionPane.showMessageDialog(null, "You Lose");
}