2015-10-15 53 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(); 
} 
相关问题