条件语句不工作Java

Mic*_*itu 0 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.");
Run Code Online (Sandbox Code Playgroud)

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

Pra*_*kar 6

你忘记{}else为什么Lose声明总是被执行.

  • 这就是为什么else块中唯一的陈述是 lblRand1.setText(Integer.toString(randomNum1));
  • 之后,程序将正常流动执行 lblOutput.setText("YOU LOSE.");
  • 因此,即使你的if条件是true和label一起设置You Win,lblOutput.setTest("You Lost")也是正常程序执行的结果,因为它不在else块中

更改

else
lblRand1.setText(Integer.toString(randomNum1));
lblRand2.setText(Integer.toString(randomNum2));
lblOutput.setText("YOU LOSE.");
Run Code Online (Sandbox Code Playgroud)

else{

lblRand1.setText(Integer.toString(randomNum1));
    lblRand2.setText(Integer.toString(randomNum2));
    lblOutput.setText("YOU LOSE.");
}
Run Code Online (Sandbox Code Playgroud)