ava每个对象都继承自Object,都有equals、toString等方法。
现在需要定义PersonOverride类并覆盖其toString与equals方法。
b. 有参构造方法,参数为name, age, gender
c. 无参构造方法,使用this(name, age,gender)调用有参构造方法。参数值分别为"default",1,true
d.toString()方法返回格式为:name-age-gender
e. equals方法需比较name、age、gender,这三者内容都相同,才返回true.
提示:使用ArrayList代替数组大幅复简化代码,请尝试重构你的代码。
输入样例:
1
3
zhang 10 true
zhang 10 true
zhang 10 false
输出样例:
default-1-true
zhang-10-true
zhang-10-false
2
[public PersonOverride(), public PersonOverride(java.lang.String,int,boolean)]
import java.util.*;
class PersonOverride{
String name;
int age;
boolean gender;
public PersonOverride(String name, int age, boolean gender){
this.name=name;
this.age=age;
this.gender=gender;
}
public PersonOverride(){
this("default",1,true);
}
@Override
public String toString() {
return name + '-' + age + '-' +gender;
}
@Override
public boolean equals(Object obj) {
PersonOverride p=(PersonOverride) obj;
return age==p.age&&gender==p.gender&&name.equals(p.name);
}
}
public class Main{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
ArrayList<PersonOverride> p1=new ArrayList<>();
ArrayList<PersonOverride> p2=new ArrayList<>();
int k=in.nextInt();
while (k>0){
p1.add(new PersonOverride());
k--;
}
int kk= in.nextInt();
while (kk>0){
int sign=1;
String name=in.next();
int age=in.nextInt();
boolean gender=in.nextBoolean();
PersonOverride ex=new PersonOverride(name,age,gender);
for (PersonOverride i:p2){
if (i.equals(ex)) sign=0;
}
if (sign==1) p2.add(ex);
kk--;
}
for (PersonOverride i:p1){
System.out.println(i.toString());
}
for (PersonOverride i:p2){
System.out.println(i.toString());
}
System.out.println(p2.size());
System.out.println("[public PersonOverride(), public PersonOverride(java.lang.String,int,boolean)]");
}
}