0

我目前正在研究以下问题:

假设一个类 Name 具有存储为字符串的属性“surname”和“firstname”。让“注册”是一个带有声明的名称列表:

ArrayList<Name> regist = new ArrayList<Name>();

假设填充了“regist”,实现下面的方法,在列表中查找具有给定姓氏的名称,如果列表中不存在匹配的名称,则返回 null。(您可以编写 Java 代码或 Java 和伪代码的混合)。

public Name find(String surname)
{
  //... to do ...
}

到目前为止,我能够得出的答案是:

public Name find (String surname)
{
  this.surname = surname;
  return null;
}


public Name()
{
  surname = " ";
}

在那之后,我被困在这里,如果有人能告诉我如何完成这段代码,那么你的帮助将不胜感激,在此先感谢。

(如果我能够正确完成它,我将能够正确测试此代码)。

4

4 回答 4

2

您必须遍历其中的项目regList并返回Name具有给定姓氏的对象。您当前的 find 代码不正确 - find 方法不在名称类中,并且(或不应)允许直接更改Name对象内的变量。

无论如何,解决方案是:

public Name find(String surname)
{
    for(Name obj : regList)
    {
       // Check the object's surname with the given one
       // Should check if obj is null
       // Must use .equals to compare strings.
       if(obj.surname.equals(surname))
           return obj;
    }

    // Not found
    return null;
}
于 2012-04-29T22:39:06.620 回答
1

你的意思是什么意思:

public Name find (String surname)
{
    // loop all names in regist
    for(Name n : regist)
    {
        // find the Name object with matching surname
        if(n.getSurname().equals(surname))
        {
            return n;
        }
    }
    return null;
}
于 2012-04-29T22:40:06.920 回答
1

您将需要遍历 regist 并测试姓氏是否与参数匹配...如果循环退出而没有找到匹配项,则返回 null。

于 2012-04-29T22:38:49.140 回答
0

您在其中声明的 ArrayList ArrayList<Name> regist = new ArrayList<Name>(); 可能已经具有您要查找的确定名称。要找到它,您必须在 sudo 代码中执行以下操作:

找出在 regist 中存储了多少名称,然后检查从位置 0 到最后一个位置的每个名称在 regist 中。如果相同,则返回名字和姓氏。请记住,first 和 surname 都添加到了 regist 中,并且您应该只测试 surename 并在surename 正确的情况下返回 first 和 surename。

于 2012-04-29T22:45:28.103 回答