所以我今天参加考试,虽然我找到了使我的代码正常工作的方法,但我不喜欢它
public static void search(String name, Friend[] array) {
for (int i = 0; i<array.length;i++) {
if((array[i].getName()).equals(name)) {
System.out.println(name+ " is found at position " +i+"\n");
}
else {
System.out.print("\nName not in list\n");
}
}
}
所以我在这里所做的工作有效,我在Friend类型的数组中搜索了从main方法传递来的名称ive。但是,当它找到一个唯一的名称时,我想停下来,因此,尽管我喜欢显示的名称,但我想显示的只是一个包含约翰而忽略其他所有名称的名称,或者是否没有约翰会只打印一个“名称不在列表中”
一旦满足条件,请使用break
中断循环。
for (int i = 0; i<array.length;i++) {
if((array[i].getName()).equals(name)) {
System.out.println(name+ " is found at position " +i+"\n");
// break the loop
// it will throw the control out of the loop
break;
} else {
System.out.print("\nName not in list\n");
}
}
您在这里有两个问题:找到名称后,您不会中断for循环您在else部分上打印“未找到”消息,并且在for循环结束后才打印,这就是为什么每个朋友都可以得到它的原因
public static void search(String name, Friend[] array) {
for (int i = 0; i<array.length;i++) {
if((array[i].getName()).equals(name)) {
System.out.println(name+ " is found at position " +i+"\n");
return; // Stop if you found one
}
}
System.out.print("\nName not in list\n"); // print that only after going through the entire list
}