2011-10-11 50 views
1

这是我的confirmBooking方法,我试图检查age是否等于学生或孩子,所以我可以使用if语句在需要的地方应用折扣。此外,我的布尔值是因为我检查给定的年龄是否在一些给定的数字之间,以确定它是一个孩子还是学生。我得到这个错误Customer.java [行:41] 线41 if(age == (isStudent() || isChild()))显示int的错误等于布尔对象

Error: The operator == is undefined for the argument type(s) int, boolean

有人能解释一下为什么?

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 
+0

你可以给更多的代码,与isChild()和isStudent()? – COD3BOY

+0

@Sanjay public boolean isChild(){ if(age> = 5 && age <= 16){ return true; } else { return false; } } public boolean isStudent(){ if(id == true){ return true; } else { return false; } } – M1N33

回答

3

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

+0

感谢您的propmt回复我试了两个我的错误没有陈述两个错误文件:Customer.java [line:41] 错误:运算符==是未定义的参数类型int,布尔 Customer.java [line:47] 错误:无法在原始类型上调用equals(boolean)int – M1N33

+0

创建'isChild(age)'和'isStudent(age)'方法,返回一个人是孩子还是学生取决于年龄。正如我在文章中写的,你不能在原始类型上调用方法。这就是为什么你得到一个错误 - “不能调用原始类型的方法”。 –

+0

Customer类型的isStudent()方法不适用于参数(int) – M1N33

1

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

你的方法应该是isStudent(int age)isChild(int age)。根据年龄参数,他们会返回真或假。

+0

因此,如果我设置了标准价格并希望对其应用折扣,我将无法尝试类似上述的东西,因此它会决定无论是否是孩子或学生,然后进行计算?我很抱歉,如果我的代码是不是真的根本就是我想说的,但是这就是我脑子里想的是 – M1N33

+1

你会:如果(isStudent(年龄)|| isChild(年龄)){... –

1

尝试,如果(年龄==这instad(isStudent()|| isChild())

如果(真==((isStudent()|| isChild())。isStudent和isChild方法的返回类型应和布尔

无法从整数应用相等方法

,而不是如果(age.equals(isChild()))申请similer方式,如果(真==((isStudent()的。| | isChild())

+0

感谢那些像魅力一样工作 – M1N33

0

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