我在搜索arraylist的方法中遇到问题。该条件仅在第一个索引中为真

时间:2019-11-30 11:57:33

标签: java arraylist

这是数组的初始化。我已经有了可以使用的get和set方法。我的问题是示例,我使用我的addStudent方法,然后输入了三个名称。只有我输入的第一个学生为真,否则为假

static ArrayList<Dynamic> users = new ArrayList<Dynamic>();

这是我的搜索方法

public static void searchStudent() {
        String trash= in.nextLine();
        System.out.println("Please Enter First Name");
        String find = in.nextLine();

        for (int i=0; i<users.size(); i++) {
        if(find.equalsIgnoreCase(users.get(i).getfName())){
                System.out.println("Student is Found");
                System.out.println(users.get(i));
                menu();
            }
        else {
            System.out.println("Student Not found");
            menu();
        }
        }
    }//end of searchStudent

2 个答案:

答案 0 :(得分:1)

仅当学生是ArrayList中的第一个元素时,当前代码才会显示“找到学生”。要使其在整个列表中进行搜索,请使循环中其他代码块中的代码失效。

public static void searchStudent() {
        String trash= in.nextLine();
        System.out.println("Please Enter First Name");
        String find = in.nextLine();

        for (int i=0; i<users.size(); i++) {
            if(find.equalsIgnoreCase(users.get(i).getfName())){
                System.out.println("Student is Found");
                System.out.println(users.get(i));
                menu();
            }
        }

        System.out.println("Student Not found");
        menu();
}//end of searchStudent

答案 1 :(得分:1)

public static void searchStudent() {
        String trash= in.nextLine();
        System.out.println("Please Enter First Name");
        String find = in.nextLine();
        boolean found = false; 

        for (int i=0; i<users.size(); i++) {
            if(find.equals(users.get(i).getfName())){
                System.out.println("Student is Found");
                System.out.println(users.get(i));
                found = true;
                menu();
            }
        }
        if(found == false){
             System.out.println("Student Not found");
        menu();

        }
    }
相关问题