2015-10-15 54 views
-3

我的繼承人爲圖書館應用我怎樣才能解決這個問題等於在基本類型(INT)

package com.accenture.totalbeginner; 

public class Person { 
    private String name; 
    private int maximumbooks; 

    public Person() { 
    name = "unknown name"; 
    maximumbooks = 3; 
    } 

    public String getName() { 
    return name; 
    } 

    public void setName(String anyname) { 
    name = anyname; 
    } 

    public int getMaximumbooks() { 
    return maximumbooks; 
    } 

    public void setMaximumbooks(int maximumbooks) { 
    this.maximumbooks = maximumbooks; 
    } 

    public String toString() { 
    return this.getName() + " (" + this.getMaximumbooks() + " books)"; 
    } 

    public boolean equals(Person p1) { 
    if(!this.getName().equals(p1.getName())) { 
     return false; 
    } 

    if(!this.getMaximumbooks().equals(p1.getMaximumbooks())) { 
     return false; 
    } 

    return true; 
    } 
} 

(!this.getMaximumbooks().equals(p1.getMaximumbooks())) 

這是說不能調用的基本類型.equals代碼(INT)

我知道這意味着什麼,但我已經嘗試了一切,我無法考慮如何糾正它。

如果您需要其他類的任何代碼,請告知我。

+0

使用''==來比較基元 – SomeJavaGuy

+1

使用''=='不.equals()'原語 –

+0

旁註代碼質量:使用camlCase也爲您的變量名。而且 - 做它應該做的事情;它應該讀取'getMaximumBooks()'例如。 – GhostCat

回答

3

equals()用於Object S(StringInteger,等...)

對於intbooleanchar等,你必須使用==

1

getMaximumbooks()返回一個基本類型int不是Object。你必須將其與==或在您的情況下!=(不equals

if (this.getMaximumbooks() != p1.getMaximumbooks()) 
{ 
    return false; 
} 
return true; 
0

只需使用==如果您要比較比較原語。

此外,因爲您已經可以訪問所有字段(private或不是),所以在工作時不要使用getters

public boolean equals(Person p1) 
{ 
    return this.maximumBooks == p1.getMaximumBooks(); 
} 
相關問題