Новенький, у меня небольшая проблема, от которой у меня болит голова. Мне кажется, что нужно исправить одну строчку кода, но хоть убей, я не могу это понять.
У меня должен быть цикл for-each, который находит объект в массиве и возвращает этот объект, если он существует, и возвращает null, если он не существует. И все же вот что для меня странно: он может легко найти объект и установить его на что-то, не на объект, а просто на что-то. Я могу сказать, потому что другие методы, зависящие от этой работы, отлично работают, этот просто не возвращает объект по какой-либо причине. В любом случае, вот код, я не думаю, что вам нужно что-то еще
public Icosahedron findIcosahedron(String labelIn) {
Icosahedron output;
output = null;
for (Icosahedron i : iList) {
if (i.getLabel().equalsIgnoreCase(labelIn)) {
output = i;
}
}
return output;
}
Запрошено:
case 'F':
System.out.print("\tLabel: ");
label = userInput.nextLine();
if (myIcosahedronList.findIcosahedron(label) != null) {
myIcosahedronList.findIcosahedron(label);
}
else {
System.out.println("\"" + label + "\" not found");
}
break;
@nupadhyaya У меня есть другой набор кода, который, когда вы вводите метку, говорит что-то вроде «он существует», а затем возвращает объект. Вместо этого он просто говорит, что объект существует, а затем переходит к следующему биту в цикле.
ты можешь опубликовать этот код
Вы не назначаете вывод myIcosahedronList.findIcosahedron (label); ни к чему.




Как только вы найдете объект, вам следует прекратить поиски:
for (Icosahedron i : iList) {
if (i.getLabel().equalsIgnoreCase(labelIn)) {
output = i;
break;
}
}
Используйте break, чтобы выйти из цикла.
Во второй части вашего хранилища кода:
case 'F':
System.out.print("\tLabel: ");
label = userInput.nextLine();
Icosahedron icosahedron = myIcosahedronList.findIcosahedron(label);
if ( icosahedron == null) {
System.out.println("\"" + label + "\" not found");
}
else {
// Do something with icosahedron
}
break;
просто return i и скиньте output.
Я согласен с этим, но чтобы внести минимальные изменения и помочь OP понять причину, я изменил этот способ.
Пробовал именно это, но вроде не получилось. Не могу просто вернуть i для этого назначения, потому что мне нужно вернуть null, если он не существует, если только я не буду удерживать null, пока он не будет назначен чему-то еще?
В вашем коде нет функции System.out.print (), поскольку, когда объект найден, вы запускаете функцию и ничего не делаете с тем, что она возвращает:
case 'F':
System.out.print("\tLabel: ");
label = userInput.nextLine();
if (myIcosahedronList.findIcosahedron(label) != null) {
myIcosahedronList.findIcosahedron(label); // <- here
}
else {
System.out.println("\"" + label + "\" not found");
}
break;
как узнать, что объект не возвращается?