0

我使用 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);
4

4 回答 4

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");
}
于 2012-09-04T19:21:25.973 回答
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);
于 2012-09-04T19:26:51.437 回答
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. 它会使代码的可读性降低。

于 2012-09-04T19:33:31.963 回答
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");   
                 }
于 2012-09-04T19:43:15.737 回答