【问题标题】:Three methods to search: name; name and surname; and age in an array三种搜索方法:名称;名和姓;和年龄在一个数组中
【发布时间】:2018-12-13 13:54:26
【问题描述】:

我有一个名为“Person”的类,其中的属性是:姓名、姓氏和年龄。我已经创建了它,它很简单,它只由 setter 和 getter 组成。但后来我有另一个名为“PersonDatabase”的类,这对我来说有点复杂。我会在这里展示:

public class PersonDatabase {

    private Person[] persons;
    private int personCount;

    public PersonDatabase(int defaultPersonsCapacity) {
        persons = new Person[defaultPersonsCapacity];
        personCount = 0;
    }

    public void addPerson(String name, String surname, int age) {

        if (personCount == persons.length) {
            System.out.println("Unable to add Person.");
            return;
        }

        persons[personCount] = new Person(name, surname, age);
        personCount++;

        System.out.println("Person added.");
    }

    public int getPersonCount() {
        return personCount;
    }

这是我到目前为止所拥有的,但我必须在其中创建另外三个方法,一个只获取姓名,另一个获取姓名和姓氏,另一个获取一个人的年龄。

我知道如何基本上“开始”它们。第一个是:

public Person searchPerson (String name) {

}

第二个和第三个应该是一样的。它们应该具有相同的“数据类型”(Person 类)和名称“searchPerson”,只更改它们应该返回的内容,第二个应该返回人的姓名和姓氏,第三个应该返回年龄这个人。

你能帮我解决这个问题吗?

【问题讨论】:

  • ldap 搜索具有类似的界面,您可以在其中指定搜索条件:uid=fooemail=foo@...跨度>
  • 为什么使用数组 (Person[]) 而不是 ArrayList<Person>?如果你这样做了,你会摆脱personCount...
  • 它只是一个练习,它说它应该保持这样。

标签: java


【解决方案1】:

这只是人员的迭代并检查getName()。但是对于教育建议,你总是需要检查人名是否可以是null,否则searchPerson函数将使用null参数调用(NullPointerException对于java开发人员来说是非常糟糕的错误,你的老师可以检查你的api)。

public Person searchPerson (String name) {
    for (Person person: persons) {
        if (name != null && name.equals( person.getName())) {
          return person;
        }
    }
    System.out.println("We can not found Person with name " + name);
    return null; 
}

【讨论】:

  • 谢谢你,@Viacheslav Vedenin。但我仍然有一些问题。例如,当我尝试为年龄创建方法时,代码的“if”部分不接受“equals(age)”。我应该以某种方式更换它吗?我刚刚搜索了它,我还没有找到任何答案。还有一件事,当我创建第二个返回姓名和姓氏的方法时,我使用了两个“if”,应该是这样吗?不幸的是,我不知道如何在 cmets 中表示它,所以我很抱歉。再次感谢您。
  • 对于 int 你应该只使用 ==,例如 if (p.getAge() == age)
【解决方案2】:

我们的想法是遍历您的数组并比较参数name 之类的东西

public Person searchPerson(String name) {
    for (Person p: persons) {
        if (p.getName().equals(name)) return p;
    }
    return null; // person could not be found
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2023-01-03
    相关资源
    最近更新 更多