简体   繁体   中英

How to iterate, search and display a specific element in an ArrayList

I'm having a problem with a specific part of a program. What I want to do is iterate, search and display an element from an ArrayList.

So I tried implementing my own snippet to the main function of the code to try:

else if (menuChoice==3) {
           System.out.println("Search Student:");
           String search = input.nextLine();

           for (Student student : students)
           {
               if (students.equals(search)){
                   System.out.println(student);
               }
           }
       }

Hoping that it would iterate through the ArrayList and access/display that specific element in the list. It returns blank, what am I doing wrong?

Here's the whole code if you're wondering:

package student;
import java.util.*;

public class Student
{
private String r_name;
private int r_age;
private String r_course;
private String r_year;
private String r_section;
private String r_studno;

public Student( String name, int age, String course, String year, String section, String studno )
{
    r_name = name;
    r_age = age;
    r_course = course;
    r_year = year;
    r_section = section;
    r_studno = studno;
}

public String getName()
{
    return r_name;
}

public int getAge()
{
    return r_age;
}

public String getCourse()
{
    return r_course;
}

public String getYear()
{
    return r_year;
}

public String getSection()
{
    return r_section;
}

public String getStudno()
{
    return r_studno;
}

public String toString()
{
    return "Name: " + r_name + ", Age: " + r_age + 
           ", Course: " + r_course + ", Year: " + r_year +
           ", Section: " + r_section + ", Student Number: " + r_studno;
}

public static void main(String[] args) 
{
   ArrayList<Student> students = new ArrayList<Student>();
   Scanner input = new Scanner(System.in);

   int menuChoice = 4;
   do {
       System.out.println("\t\t\tStudent Record Menu");
       System.out.println("\t\t1. Add Student\t2. View Students\t3. Search Student\t4. Exit");
       try {
           System.out.println("Enter a choice: ");
           menuChoice = Integer.parseInt(input.nextLine());
       } catch (NumberFormatException e) {
           continue;
       }

       if (menuChoice==1)
       {
           System.out.println("Add a Student");
           System.out.println("Full name:");
           String name = input.nextLine();

           int age = -1;
           do {
               try {
                   System.out.println("Age:");
                   age = Integer.parseInt(input.nextLine());
               } catch (NumberFormatException e) {
                   System.out.println("Enter a number!");
                   continue;
               }
           } while (age <= 0);

           System.out.println("Course:");
           String course = input.nextLine();

           System.out.println("Year:");
           String year = input.nextLine();

           System.out.println("Section:");
           String section = input.nextLine();

           System.out.println("Student Number:");
           String studno = input.next();

           Student student = new Student(name, age, course, year, section, studno);
           students.add(student);

       } else if (menuChoice==2) {
           System.out.println("Students:");
           for (Student student : students)
           {
               System.out.println(student);
           }
       } else if (menuChoice==3) {
           System.out.println("Search Student:");
           String search = input.nextLine();

           for (Student student : students)
           {
               if (students.equals(search)){
                   System.out.println(student);
               }
           }
       }

   } while (menuChoice<4);
}
}

You are checking if the ArrayList students is equal to the String search . The result can only be false. I guess, you are trying to do the following:

for (Student student : students)
{
    if (student.getName().equals(search))
    {
        System.out.println(student);
        break;//assuming student name are unique. remove if not
    }
}

You must compare the search key with the key id of student for example if all names are unique then use

 for (Student student : students)
       {
           if (student.getname().equals(search)){
               System.out.println(student);
           }
       }

You are compairing the whole student object reference with the search key how it will compare it

if you want to display the whole content then you will have to make a method in which you will get all details using the id eg:

getStudentbyname( String studentname){

here comes the code to get all data

}

then in your for loop call the method and store in array

 for (Student student : students)
       {
           if (student.getname().equals(search)){
              Arraylist<String> studentarr = student.getStudentbyname(student.getname());

System.out.println(""+studentarr)
           }
       }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM