条件语句不工作Java

时间:2013-10-04 10:01:04

标签: java if-statement

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.");

为什么它总是显示你输了,即使我的输入是一个必须赢的数字?

3 个答案:

答案 0 :(得分:6)

您忘了{} else这就是为什么Lose语句总是被执行的原因。

  • 这就是为什么else块中唯一的陈述是 lblRand1.setText(Integer.toString(randomNum1));
  • 之后,程序将正常流动以执行lblOutput.setText("YOU LOSE.");
  • 因此,即使您的if条件为true且标签设置为You WinlblOutput.setTest("You Lost")也会因正常程序执行而执行,因为它不在{ {1}}阻止

更改

else

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

答案 1 :(得分:1)

从不使用没有大括号的语句(请参阅else!)

if ([...]){
  ...
}else
lblRand1.setText(Integer.toString(randomNum1));
lblRand2.setText(Integer.toString(randomNum2));
lblOutput.setText("YOU LOSE.");

相当于

if ([...]){
  ...
} else {
  lblRand1.setText(Integer.toString(randomNum1));
}
lblRand2.setText(Integer.toString(randomNum2));
lblOutput.setText("YOU LOSE.");

答案 2 :(得分:0)

你忘记了别人的阻拦。

此外,您可以使用Math.maxMath.min来简化您的情况

lblRand1.setText(Integer.toString(randomNum1));
lblRand2.setText(Integer.toString(randomNum2));
if (number > Math.min(randomNum1, randomNum2) 
    && number < Math.max(randomNum1, randomNum2)){
    lblOutput.setText("YOU WIN.");
} else {
    lblOutput.setText("YOU LOSE.");
}