Java:使“if”语句中的int和boolean可比较

时间:2014-03-29 00:33:50

标签: java boolean

是否可以有一个声明,如......

     if(delco == 1 && heavy < 5)
         System.out.println("The total cost of your delivery is: $" + OPT_ONE);
     if(delco == 1 && heavy >= 5 && heavy <= 20)
        System.out.println("The total cost of your delivery is: $" + OPT_TWO);

...还应用布尔逻辑来表达输出?像这样......

  boolean overnight;

     if(delco == 1 && heavy < 5) && (overnightShip == YES)
         System.out.println("The total cost of your delivery is: $" + OPT_ONE + OVERNIGHT);
     if(delco == 1 && heavy >= 5 && heavy <= 20) && (overnightShip == NO)
        System.out.println("The total cost of your delivery is: $" + OPT_TWO);

我已尝试过此代码的一些变体,而我收到的错误表明它们是无与伦比的类型。我如何才能使它们具有可比性呢?

3 个答案:

答案 0 :(得分:1)

你错过了一些括号,因为你的逻辑似乎没问题。它应该是,例如:

if ( (delco == 1 && heavy < 5) && (overnightShip == YES) )
    ...

注意外括号。

此外,假设您已将YES定义为等于true的布尔常量,这是多余的,因此:

if ( (delco == 1 && heavy < 5) && (overnightShip) )
    ...

在这种情况下,这些括号也是多余的,整个过程简化为:

if ( delco == 1 && heavy < 5 && overnightShip )
    ...

答案 1 :(得分:0)

只需使用布尔值:

if (delco == 1 && heavy < 5 && overnightShip)

将布尔“flag”变量与布尔常量进行比较是不好的样式 - 总是更喜欢按原样测试布尔值。

答案 2 :(得分:0)

Java中的布尔类型具有以下值:

true
false

YES
NO

除非你自己在某处定义了这些常量

所以你的代码应该是这样的:

(overnightShip == true)
(overnightShip == false)

甚至:

(overnightShip)    // true
(! overnightShip)  // false