gpt4 book ai didi

java - 使用多态性打印字符串出现次数

转载 作者:行者123 更新时间:2023-12-02 13:42:51 25 4
gpt4 key购买 nike

我无法弄清楚如何打印出“Dr”标题出现在测试程序的数组对象中的次数,因为它们包含多个字符串。使用 equals 类是解决这个问题的最佳方法吗?

注意:我正在使用继承和多态性。

public class Driver {

public static void main(String[ ] args) {
Person[] persons = new Person[5];

persons[0] = new Person("John Smith");
persons[1] = new Person();
persons[2] = new TitledPerson("Rowan Bean", "Mr");
persons[3] = new TitledPerson("Phil McGraw", "Dr");
persons[4] = new TitledPerson("Hugo Strange", "Dr");

System.out.println("Person 3 and 4 are equal: " + persons[2].equals(persons[3]));
System.out.println();

String search = "Dr";
int counter = 0;
for(int i = 0; i < persons.length; i++) {
System.out.println(persons[i]);

if(persons[i] instanceof TitledPerson) {
if(persons[i].equals(search)) {
counter++;
}
}
}
System.out.println();

System.out.println("There are " + counter + " 'Dr' titles listed.");
}
}

人员类别:

public class Person {

private String name;
private final static String DEFAULT_NAME = "N/A";

public Person() {
this(DEFAULT_NAME);
}

public Person(String name) {
this.name = name;
}

public void setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

public String toString() {
return "Name: " + name;
}

public boolean equals(Object obj) {
if(obj instanceof Person) {
Person otherPerson = (Person) obj;
return name.equalsIgnoreCase(otherPerson.getName());
} else {
return false;
}
}

}

TitledPerson 类:

public class TitledPerson extends Person { 

private String title;

public TitledPerson() {
}

public TitledPerson(String name, String title) {
super(name);
this.title = title;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

@Override
public String toString() {
String parentString = super.toString();
parentString += ", " + title;
return parentString;
}

@Override
public boolean equals(Object obj) {
if(obj instanceof TitledPerson) {
TitledPerson otherPers = (TitledPerson) obj;
return super.equals(obj) && this.title.equalsIgnoreCase(otherPers.title);
} else {
return false;
}
}

}

最佳答案

更改为使用 TitledPerson 类中的 getTitle,同时与 search 关键字进行比较。

if(((TitledPerson)persons[i]).getTitle().equals(search)) {
counter++;
}

关于java - 使用多态性打印字符串出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com