显示int的错误等于布尔对象

时间:2011-10-11 08:42:33

标签: java

这是我的confirmBooking方法,我试图检查年龄是否等于学生或孩子,这样我就可以使用if语句在任何需要的地方申请折扣。我的布尔值也是因为我检查了给定年龄是否在某些给定数字之间以确定它是儿童还是学生。我收到此错误Customer.java [line:41] 第41行是if(age == (isStudent() || isChild()))

  

错误:对于参数类型int,运算符==未定义,   布尔

有人可以解释原因吗?

 public double confirmBooking(){
    double standardTicketPrice = 56.0;
    double standardMealPrice = 30.0;

    if(age == (isStudent() || isChild())){
    return standardTicketPrice / 2.0;
    }else{
    return standardTicketPrice * (20.0/100.0); 
    }

    if(age.equals(isChild())){
      return standardMealPrice / 2.0;
    }else{
     return standardMealPrice * (10.0/100.0); 
    }
  }// end method confirmBooking

4 个答案:

答案 0 :(得分:3)

将原始类型与==进行比较。您无法在基本类型上调用equals方法。 原始类型不是对象。另一个错误是您直接比较booleanint值。它们不兼容。

答案 1 :(得分:1)

intboolean是两种不同的类型,永远不会彼此相等。 int有2 ^ 32个值,而布尔值只有两个:truefalse

您的方法应为isStudent(int age)isChild(int age)。根据年龄参数,它们会返回true或false。

答案 2 :(得分:1)

尝试这个if的instad(年龄==(isStudent()|| isChild())

if(true ==((isStudent()|| isChild())。isStudent和isChild方法返回类型shold是boolean。

你不能从整数中应用相等的方法。

而不是if(age.equals(isChild()))应用similer方式,如果(true ==((isStudent()|| isChild())

答案 3 :(得分:0)

您无法比较intdouble 你只需要if(isStudent() || isChild())(在这些函数中你已经“检查了给定的年龄是否在给定的数字之间”)。