使用方法在数组中搜索唯一名称

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

所以我今天参加考试,虽然我找到了使我的代码正常工作的方法,但我不喜欢它

    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。但是,当它找到一个唯一的名称时,我想停下来,因此,尽管我喜欢显示的名称,但我想显示的只是一个包含约翰而忽略其他所有名称的名称,或者是否没有约翰会只打印一个“名称不在列表中”

java arrays loops search
1个回答
0
投票

一旦满足条件,请使用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");
    }
}

0
投票

您在这里有两个问题:找到名称后,您不会中断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

}
© www.soinside.com 2019 - 2024. All rights reserved.