0

hangmanアプリケーションの画像を変更するためにifステートメントを使用しましたが、これまでは機能しましたが、エラーが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 に答える