如果挂机错误,则无法显示丢失的消息

时间:2012-09-04 19:20:00

标签: java image if-statement

我使用了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 个答案:

答案 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");   
                 }