首页 > 解决方案 > 使用方法在数组中搜索唯一名称

问题描述

所以我今天有考试,虽然我找到了一种让我的代码工作的方法,但我不喜欢它

    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 方法传递的名称。但是当它找到一个唯一的名字时我想停下来,所以虽然我喜欢我所拥有的,因为它显示了如果有多个名字我想只显示那些说包含约翰并忽略所有其他名字或者如果没有约翰,它只会打印一个“名称不在列表中”

标签: javaarraysloopssearch

解决方案


你在这里有两个问题:
你没有在找到名字后打破for循环你
在else部分打印'not found'消息,而不是在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

}

推荐阅读