在Java中,如何从arraylist返回特定对象(索引)?
我创建了一个名为Student的类,并给它分配了3个值(StudentNumber、Course、Mark);然后,我将一个创建的学生分配给一个名为studentsCourses的arrayList 这样,每个学生在数组中使用一个索引。但是我怎样才能让学生们从arrayList中恢复过来。。。这有意义吗?我把它们存储起来了,但我不知道如何回忆这些信息以便我能看到它在Java中,如何从arraylist返回特定对象(索引)?,java,class,object,arraylist,sentinel,Java,Class,Object,Arraylist,Sentinel,我创建了一个名为Student的类,并给它分配了3个值(StudentNumber、Course、Mark);然后,我将一个创建的学生分配给一个名为studentsCourses的arrayList 这样,每个学生在数组中使用一个索引。但是我怎样才能让学生们从arrayList中恢复过来。。。这有意义吗?我把它们存储起来了,但我不知道如何回忆这些信息以便我能看到它 public static void main (String[]args){ ArrayList<Student> s
public static void main (String[]args){
ArrayList<Student> studentsCourses= new ArrayList<Student>();
String studentNumber="~";
String course="~";
int mark=0;
Student pat;
Student s=null;
do{
s=new Student();
System.out.println("Please Enter Your Student ID (type quit to Quit):\n");
studentNumber=keybrd.next();
s.setStudentNumber(studentNumber);
System.out.println("Please Enter Your Course ID:\n");
course=keybrd.next();
s.setCourse(course);
System.out.println("Please Enter Your Mark:\n");
mark=keybrd.nextInt();
s.setMark(mark);
s.printStates();
studentsCourses.add(s);
}while(!studentNumber.equals("quit"));
System.out.println(studentsCourses.size());
System.out.println(studentsCourses);
publicstaticvoidmain(字符串[]args){
ArrayList StudentScorses=新的ArrayList();
字符串studentNumber=“~”;
字符串course=“~”;
整数分=0;
学生帕特;
学生s=null;
做{
s=新生();
System.out.println(“请输入您的学生ID(键入quit以退出):\n”);
studentNumber=keybrd.next();
s、 设置学生编号(学生编号);
System.out.println(“请输入您的课程ID:\n”);
course=keybrd.next();
s、 赛程(赛程);
System.out.println(“请输入您的标记:\n”);
mark=keybrd.nextInt();
s、 设定标记;
s、 打印状态();
学生人数:增加;
}而(!studentNumber.equals(“quit”));
System.out.println(studentsCourses.size());
系统输出打印(学生浏览);
因此,如果我想为创建的学生(pat)分配索引1的状态,我该怎么做
我的另一个问题(与这段代码一起)是我的sentinel。当我键入quit时,它确实会退出。但它首先完成了“do”的运行。这意味着我最终遇到了一个学生,他的编号是“quit”,课程是什么,mark是什么
如何在键入“退出”后立即强制其中断do?为什么不使用哈希映射,将键作为学生编号,将该键的对象作为学生对象。这样也可以避免重复。
对于哨兵
// 1. Create a Scanner using the InputStream available.
Scanner scanner = new Scanner( System.in );
String input=null;
do{
// 2. Don't forget to prompt the user
System.out.print( "Type some data for the program: " );
// 3. Use the Scanner to read a line of text from the user.
input = scanner.nextLine();
// 4. Now, you can do anything with the input string that you need to.
// Like, output it to the user.
System.out.println( "input = " + input );
}while(!input.equalsIgnoreCase("quit"));
为什么不使用一个hashmap,键作为学生号,键的对象作为学生对象。这样可以避免重复。
对于哨兵
// 1. Create a Scanner using the InputStream available.
Scanner scanner = new Scanner( System.in );
String input=null;
do{
// 2. Don't forget to prompt the user
System.out.print( "Type some data for the program: " );
// 3. Use the Scanner to read a line of text from the user.
input = scanner.nextLine();
// 4. Now, you can do anything with the input string that you need to.
// Like, output it to the user.
System.out.println( "input = " + input );
}while(!input.equalsIgnoreCase("quit"));
ArrayList不是数组…它是一个使用数组作为其备份存储的列表 从列表中检索的方法是
list.get(index)
或者,您可以使用一些语法糖来循环它们
List<Student> students = new ArrayList<Student>();
// add students
for (Student student : students) {
// do something with student
}
List students=new ArrayList();
//添加学生
用于(学生:学生){
//对学生做点什么
}
ArrayList不是一个数组……它是一个使用数组作为后备存储的列表
从列表中检索的方法是list.get(index)
或者,您可以使用一些语法糖来循环它们
List<Student> students = new ArrayList<Student>();
// add students
for (Student student : students) {
// do something with student
}
List students=new ArrayList();
//添加学生
用于(学生:学生){
//对学生做点什么
}
使用方法检索元素
使用方法在索引处插入元素。使用方法检索元素
使用方法在索引处插入元素。尝试
System.out.println("Please Enter Your Student ID (type quit to Quit):\n");
studentNumber=keybrd.next();
while (!studentNumber.equals("quit")){
s=new Student();
s.setStudentNumber(studentNumber);
System.out.println("Please Enter Your Course ID:\n");
course=keybrd.next();
s.setCourse(course);
System.out.println("Please Enter Your Mark:\n");
mark=keybrd.nextInt();
s.setMark(mark);
s.printStates();
studentsCourses.add(s);
System.out.println("Please Enter Your Student ID (type quit to Quit):\n");
studentNumber=keybrd.next();
}
试一试
有两件事你需要知道:- 首先,您使用的是
do while
循环,这是一个退出检查循环,因此它在终止之前至少会执行一次。如果您想避免它,请尝试使用while
循环
接下来,要从列表中检索所有元素,可以使用list.get(index)
或进行循环遍历,如下所示:-
List<Student> students = new ArrayList<Student>();
for (Student student : students) {
// Do something with the student object.
}
因此,循环意味着
对于集合(学生)中的每个项目(学生)
对项目(学生)
现在回到循环部分。忘记一切,只需使用中断;
在这段代码之后,studentNumber=keybrd.next();
,进行检查并中断循环
if(studentNumber.equals("quit")){
break;
}
简单的解决方案。有两件事你需要知道:-
首先,您使用的是do while
循环,这是一个退出检查循环,因此它在终止之前至少会执行一次。如果您想避免它,请尝试使用while
循环
接下来,要从列表中检索所有元素,可以使用list.get(index)
或进行循环遍历,如下所示:-
List<Student> students = new ArrayList<Student>();
for (Student student : students) {
// Do something with the student object.
}
因此,循环意味着
对于集合(学生)中的每个项目(学生)
对项目(学生)
现在回到循环部分。忘记一切,只需使用中断;
在这段代码之后,studentNumber=keybrd.next();
,进行检查并中断循环
if(studentNumber.equals("quit")){
break;
}
简单的解决方案。您可以在学生的课堂上添加toString()
方法:
@Override
public String toString()
{
return "\tStudentNumber: " + studentNumber
+ "\tCourse: " + course
+ "\tMarks: " + marks;
}
然后你可以说:
System.out.println(studentsCourses);
就这一点而言:
How do I force it to break the do as soon as "quit" is typed?
此行为是因为您正在使用do..while()
!请尝试改用while
。您可以在学生的课堂上添加toString()
方法:
@Override
public String toString()
{
return "\tStudentNumber: " + studentNumber
+ "\tCourse: " + course
+ "\tMarks: " + marks;
}
然后你可以说:
System.out.println(studentsCourses);
就这一点而言:
How do I force it to break the do as soon as "quit" is typed?
这种行为是因为您正在使用do..while()
!请尝试改用while
。“但是我如何让学生从arrayList中恢复过来……如果这样做有意义的话?我已经存储了他们,但我不知道如何调用信息以便查看。”
要从arraylist获取数据,请执行以下操作:
for (Student student : studentsCourses) {
System.out.println(student.getStudentNumber());
System.out.println(student.getCourse());
System.out.println(student.getMarkr());
}
或
“但我如何让学生们从arrayList中恢复过来……如果这有意义的话?我已经把他们存储起来了,但我不知道如何回忆信息以便我能看到它。”
要从arraylist获取数据,请执行以下操作:
for (Student student : studentsCourses) {
System.out.println(student.getStudentNumber());
System.out.println(student.getCourse());
System.out.println(student.getMarkr());
}
或
你到底想做什么?我实际上推迟了近一个小时发布这篇文章,以为我能找到简单的解决方案,但我没有;现在(发布后5分钟)我想出来了。这是非常简单的pat=studentsCourses.get(index);我仍然需要修复sentinel部分,但如果有人可以帮助我?@Anubhab我希望程序向用户询问他们的学号、课程名称,