Вот код вашего текущего кода:
Вы рассматриваете каждый объект в списке person
. Если имя этого человека соответствует параметру, вы получите номер из него. В противном случае вы устанавливаете result
на сообщение об ошибке. Обратите внимание, что условие об остальном применяется для КАЖДОГО человека, а не в конце, если было обнаружено, что НИКТО не имеет того же имени. То есть, даже если вы найдете нужного человека и назначите result
его номеру, если следующий человек не прав, вы снова перезапишете result
в сообщении об ошибке.
Чтобы убедиться, что ошибка сообщение назначается только один раз и только если НИКТО не найдено, вам нужно проверить, верно ли это, пройдя через всех (так как вы не можете узнать, найден ли никто, прежде чем проверять всех!). Хитрость заключается в том, чтобы найти какой-то пункт, который всегда верен, когда никто не был найден. Но это может быть просто, если result
никогда не изменялся. То есть вы можете установить result
в значение по умолчанию при объявлении, а затем изменить его на число, только если был найден нужный человек. Кроме того, я предполагаю, что должен быть найден только один человек, и вы не хотите на самом деле объединять числа вместе (что вы и делаете, используя +=
). Тем не менее, попробуйте это:
public String searchNumber(String name){
for (Person search: person){
if (search.getName().contains(name)){
return search.getNumber();
}
}
return " number not known ";
}