我遇到程序特定部分的问题。我想要做的是迭代,搜索和显示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 :(得分:2)
您正在检查ArrayList
students
是否等于String
search
。结果只能是假的。我想,你正在努力做到以下几点:
for (Student student : students)
{
if (student.getName().equals(search))
{
System.out.println(student);
break;//assuming student name are unique. remove if not
}
}
答案 1 :(得分:1)
您必须将搜索关键字与学生的关键ID进行比较,例如,如果所有名称都是唯一的,请使用
for (Student student : students)
{
if (student.getname().equals(search)){
System.out.println(student);
}
}
您正在使用搜索关键字对整个学生对象参考进行比较
如果你想显示整个内容,那么你将不得不制作一个方法,你将使用id得到所有细节,例如:
getStudentbyname( String studentname){
here comes the code to get all data
}
然后在你的for循环中调用方法并存储在数组
中 for (Student student : students)
{
if (student.getname().equals(search)){
Arraylist<String> studentarr = student.getStudentbyname(student.getname());
System.out.println(""+studentarr)
}
}