0
int number;
  int randomNum1= (int)(Math.random() * 12 + 1);
 int randomNum2= (int)(Math.random() * 12 + 1);
    try{
        number = Integer.parseInt(this.txtInput.getText());
    }
    catch (Exception e){
        JOptionPane.showMessageDialog(this, "Please input a integer.", "Error",
                JOptionPane.ERROR_MESSAGE);
        return;
        }                
    if (number > randomNum1 && number < randomNum2 ||  number > randomNum2 && number  < randomNum1){
    lblRand1.setText(Integer.toString(randomNum1));
    lblRand2.setText(Integer.toString(randomNum2));
    lblOutput.setText("YOU WIN.");
    }else
    lblRand1.setText(Integer.toString(randomNum1));
    lblRand2.setText(Integer.toString(randomNum2));
    lblOutput.setText("YOU LOSE.");

私の入力が勝つ必要がある数字であるにもかかわらず、常にあなたが負けたと表示されるのはなぜですか?

4

3 に答える 3

6

そのため、ステートメントが常に実行される理由を忘れてい{}ました。elseLose

  • elseそのため、ブロック 内の唯一のステートメントはlblRand1.setText(Integer.toString(randomNum1));
  • その後、プログラムは通常の流れで実行されますlblOutput.setText("YOU LOSE.");
  • したがって、if条件がで、trueラベルが で設定されていても、ブロック内にないため、通常のプログラム実行の結果として実行されますYou WinlblOutput.setTest("You Lost")else

変化する

else
lblRand1.setText(Integer.toString(randomNum1));
lblRand2.setText(Integer.toString(randomNum2));
lblOutput.setText("YOU LOSE.");

else{

lblRand1.setText(Integer.toString(randomNum1));
    lblRand2.setText(Integer.toString(randomNum2));
    lblOutput.setText("YOU LOSE.");
}
于 2013-10-04T10:03:48.327 に答える