2014-08-28 2 views
0

У меня возникла проблема с определенной частью программы. То, что я хочу сделать, - это итерация, поиск и отображение элемента из ArrayList.Как выполнять итерацию, поиск и отображение определенного элемента в ArrayList

Так что я попытался реализацией своего собственного фрагмента кода к главной функции коды попробовать:

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); 
       } 
      } 
     } 

Надеясь, что он будет перебирать ArrayList и доступ/отображение, конкретный элемент в списке. Он возвращает пустое, что я делаю неправильно?

Вот весь код, если вам интересно,:

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); 
} 
} 
+0

Какой кресте вы пытаетесь использовать. Вам нужно найти ученика по имени, курсу, разделу или чему-то еще? – talex

+0

Я хотел, чтобы он отображал всю информацию об этом конкретном элементе (включая имя, возраст, курс, год и т. Д.). Я не уточнил это на посту выше, извините. – CinnamonRii

+0

Но для чего студент? Для всех или для конкретного учащегося с определенным именем? – talex

ответ

2

Вы проверяете, если ArrayListstudents равно Stringsearch , Результат может быть только ложным. Я думаю, вы пытаетесь сделать следующее:

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

На самом деле, я хотел, чтобы он отображал весь контент этого конкретного элемента (включая имя, возраст, курс, год и т. Д.). Я не уточнял его на посту выше, извините. – CinnamonRii

+0

Я вижу, что вы переопределяете метод 'toString()' 'Student', поэтому' System.out.println (student) 'должен выводить все, что вы указали. Нет? – ortis

+0

Метод 'toString()' предназначен для печати всех сохраненных данных в ArrayList. Так что я думаю, более или менее, да. Теперь я пытаюсь сформулировать «Поиск» в программе, то есть программа предложит пользователю ввести идентификационный номер этого ученика (при условии, что он уже сохранен в arraylist) и отобразит информацию об этом конкретном ученике (имя, возраст, курс, раздел и т. д.) – CinnamonRii

1

Вы должны сравнить ключ поиска с ключевым идентификатором студента, например, если все имена являются уникальными, то используйте

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

Вы компилируют всю ссылку на объект студента с помощью ключа поиска, как он будет сравнивать его

Если вы хотите отобразить весь контент, тогда вам нужно будет сделать способ в whi ч вы получите все детали, используя идентификатор, например:

getStudentbyname(String studentname){ 

here comes the code to get all data 

} 

Затем в течение цикла вызывается метод и хранить в массиве

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

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

Должно быть «student.getName()» –

+0

было по ошибке – kirti

+0

Итак, я создам метод, который будет получать детали конкретного ученика из ArrayList, я прав? Sooo ... Я предположил, что я также получу доступ к содержимому ArrayList по этому методу? – CinnamonRii

Смежные вопросы