公共字符串searchNumber(字符串名称){字符串结果=“”;
for(Person search: person){
if(search.getName().contains(name)){
result += search.getNumber();
}
else{
result = " number not known ";
}
}
return result;
}
在这里寻求有关如何解决此问题的建议。我希望这是一种使用getName方法查看本地实例(名称)是否在ArrayList中的方法。但是,我只能使后者的结果仅显示出来,并说“未知数字”。我的分步过程如下:我创建了Person(搜索)的实例,访问getName方法,由于最初是String方法而访问contains方法,然后检查本地实例是否在数组列表。如果我的逻辑不正确,请纠正我。另外,由于它是一个Person对象,因此访问person数组是否会阻止我在for-each循环中使用String类型?我尝试使用String类型执行此操作,但由于无法在for-each循环内转换为String,因此无法继续进行。
以下是您当前代码的细目:
您考虑person
列表中的每个对象。如果此人的姓名与参数匹配,则可以从中获取数字。否则,将result
设置为错误消息。请注意,else子句适用于每个人,而不是在末尾发现NOBODY具有相同名称的情况下。也就是说,即使找到合适的人并为他们的号码分配result
,如果下一个人不正确,则您会再次将result
覆盖到错误消息中。
为了确保仅在找到NOBODY时才分配错误消息一次,您需要在遍历每个人之后检查是否正确(因为在检查每个人之前您不知道是否找不到人!)。现在的诀窍是找到一些子句,当找不到任何人时,该子句总是正确的。但这可能只是result
从未修改过的情况。也就是说,可以在声明时将result
设置为默认值,然后仅在找到合适的人的情况下才将其修改为数字。另外,我假设应该只找到一个人,并且您实际上不希望将数字串联在一起(这是使用+=
所做的事情)。就是说,试试这个:
public String searchNumber(String name){
String result = " number not known ";
for (Person search: person){
if (search.getName().contains(name)){
result = search.getNumber();
}
}
return result;
}