如何在每个循环的ArrayList中检测字符串?

问题描述 投票:0回答:1

公共字符串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,因此无法继续进行。

java arraylist contains instantiation
1个回答
0
投票

以下是您当前代码的细目:

您考虑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;
}
© www.soinside.com 2019 - 2024. All rights reserved.