2011-10-11 35 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())(在這些函數中,您已經「檢查給定的年齡是否在某些給定的數字之間」)。