继承我的图书馆应用程序代码
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()))
这就是说不能在原始类型(int)上调用.equals
我知道这意味着什么,但我已经尝试了一切,我无法思考如何纠正它。
如果您需要其他课程的任何代码,请告诉我。
答案 0 :(得分:8)
equals()
用于Object
s(String
,Integer
等...)
对于原语,例如int
,boolean
,char
等,您必须使用==
答案 1 :(得分:2)
getMaximumbooks()
返回基本类型int
而不是Object
。您必须将其与==
或您的!=
(不是equals
)进行比较
if (this.getMaximumbooks() != p1.getMaximumbooks())
{
return false;
}
return true;
答案 2 :(得分:1)
如果您要比较基元,请使用==
。
此外,尝试不使用getters
,因为您已经访问了所有字段(private
或非{}}。
public boolean equals(Person p1)
{
return this.maximumBooks == p1.getMaximumBooks();
}