新来的一个小问题让我头疼。我感觉就像要修复的一行代码一样,但对于我的一生,我无法弄清楚。
我应该有一个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;
答案 0 :(得分:2)
一旦找到对象,就应该停止进一步搜索:
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;
答案 1 :(得分:1)
您的代码不包含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;