我目前正在处理以下问题:
假设类名称具有存储为字符串的属性“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 = " ";
}
在那之后,我被困在这里,如果有人能告诉我如何完成这段代码,那么你的帮助将会得到真正的赞赏,提前谢谢。
(如果我能够正确完成它,我将能够正确测试此代码。)
答案 0 :(得分:2)
您必须循环regList
中的项目并返回具有给定姓氏的Name
对象。您当前的查找代码不正确 - 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;
}
答案 1 :(得分:1)
您需要循环注册并测试姓氏是否与参数匹配...如果循环退出而未找到匹配,则返回null。
答案 2 :(得分: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;
}
答案 3 :(得分:0)
您声明的ArrayList
ArrayList<Name> regist = new ArrayList<Name>();
可能已经有了你想要的确定名称。要找到它,你必须在sudo代码中执行以下操作:
查看注册中存储了多少个名称,然后检查从0位到注册中最后位置的每个名称。如果它是相同的,那么返回第一个和姓氏。请记住,将first和surname添加到注册中,并且只应测试surename并返回first和surename,如果surename正确的话。