通过多个 类 访问另一个数组列表中的数组列表
Accessing an Array list inside of another Array List through multiple classes
我正在用 Java 做一些练习,教科书中有一个例子一直困扰着我。问题是:
》P8.7修改How To 7.1的成绩簿应用,使其可以处理多个
学生。首先,向用户询问所有学生的姓名。然后读入所有的分数
测验,提示每个学生的分数。最后,打印所有学生的名字
以及他们的最终成绩。使用单个 class 且仅使用静态方法。
P8.8 重复练习 P8.7,使用多个 classes。修改 GradeBook class 使其
收集 Student 类型的对象。每个这样的对象都应该有一个分数列表。"
我目前在做8.8的练习。我了解如何使用多个 classes 并且对如何解决此问题有一个大致的了解。早些时候,我创建了一个充当 "bank" 的程序。该银行包含多个 "accounts",它们作为 "BankAccount" class 的单独对象包含在内。每个帐户都有一个单独的余额和帐号。我能够在 "bank" class 中创建一个方法来按帐号搜索。这没有得到余额,但只告诉该帐户是否存在。
在我当前的问题中,我有一个 GradeBook class,它将包含 "Student" class 的许多对象。这些 "Students" 中的每一个都将包含一个保存为 ArrayList 的成绩列表。我遇到的问题是确切地知道如何为学生调用单个数组列表以便显示它。我尝试了很多方法,但似乎无法全神贯注地去做。有人可以看看我的代码并告诉我如何在最终测试器 class 中检索学生的个人成绩列表吗?我的测试仪 class 还没有完成,因为我卡在了这一步,但我相信你可以得到图片..
GradeBookTester class
package gradebook_multi_class;
import java.util.ArrayList;
import java.util.Scanner;
import bankAccount.Bank;
public class GradebookTester
{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int counterMain=0;
ArrayList<String> list = new ArrayList<String>();
GradeBook book = new GradeBook();
System.out.println("Welcome to the gradebook utility!");
do{
System.out.println("Please enter a student name: ");
String name = in.next();
System.out.println("Please enter the student quiz grade: ");
String grade = in.next();
list.add(grade);
list.add("3");
book.addStudent(new Student(name,list));
System.out.println("Do you have more students to add? (Y/N)");
String input = in.next();
if(input.equalsIgnoreCase("Y")){
}else{
counterMain=1;
}
}while(counterMain==0);
}
}
成绩册Class
package gradebook_multi_class;
import java.util.ArrayList;
public class GradeBook
{
private ArrayList<Student> students;
public GradeBook(){
students = new ArrayList<Student>();
}
public void addStudent(Student a){
students.add(a);
}
public Student find(String aName){
for(Student a: students){
if(a.getName().equals(aName))
return a;
}
return null;
}
}
学生Class
package gradebook_multi_class;
import java.util.ArrayList;
public class Student
{
private String studentName;
private ArrayList<String> grades = new ArrayList<String>();
public Student(String aName, ArrayList<String> list){
studentName = aName;
grades=list;
}
public String getName(){
return studentName;
}
public ArrayList<String> getGrades(){
return grades;
}
}
您已经完成了所有工作,在成绩册的查找方法中 class。
你只要这样做,在你的主要 class:
Student desiredStudent = book.find("Joe");
desiredStudent.getGrades();
Finally, print the names of all students and their final scores.
如果这是问题所在,就像 Student.getGrades()
添加一个方法 GradeBook.getStudents()
,
public ArrayList<Student> getStudents() {
return students.AsReadOnly();
}
然后在main()
方法中,
for (Student student : students) {
System.out.println("Student: " + student.getName());
System.out.print("Grades: ");
for (String grade : student.getGrades())
System.out.println(grade + " ");
}
我正在用 Java 做一些练习,教科书中有一个例子一直困扰着我。问题是:
》P8.7修改How To 7.1的成绩簿应用,使其可以处理多个 学生。首先,向用户询问所有学生的姓名。然后读入所有的分数 测验,提示每个学生的分数。最后,打印所有学生的名字 以及他们的最终成绩。使用单个 class 且仅使用静态方法。 P8.8 重复练习 P8.7,使用多个 classes。修改 GradeBook class 使其 收集 Student 类型的对象。每个这样的对象都应该有一个分数列表。"
我目前在做8.8的练习。我了解如何使用多个 classes 并且对如何解决此问题有一个大致的了解。早些时候,我创建了一个充当 "bank" 的程序。该银行包含多个 "accounts",它们作为 "BankAccount" class 的单独对象包含在内。每个帐户都有一个单独的余额和帐号。我能够在 "bank" class 中创建一个方法来按帐号搜索。这没有得到余额,但只告诉该帐户是否存在。
在我当前的问题中,我有一个 GradeBook class,它将包含 "Student" class 的许多对象。这些 "Students" 中的每一个都将包含一个保存为 ArrayList 的成绩列表。我遇到的问题是确切地知道如何为学生调用单个数组列表以便显示它。我尝试了很多方法,但似乎无法全神贯注地去做。有人可以看看我的代码并告诉我如何在最终测试器 class 中检索学生的个人成绩列表吗?我的测试仪 class 还没有完成,因为我卡在了这一步,但我相信你可以得到图片..
GradeBookTester class
package gradebook_multi_class;
import java.util.ArrayList;
import java.util.Scanner;
import bankAccount.Bank;
public class GradebookTester
{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int counterMain=0;
ArrayList<String> list = new ArrayList<String>();
GradeBook book = new GradeBook();
System.out.println("Welcome to the gradebook utility!");
do{
System.out.println("Please enter a student name: ");
String name = in.next();
System.out.println("Please enter the student quiz grade: ");
String grade = in.next();
list.add(grade);
list.add("3");
book.addStudent(new Student(name,list));
System.out.println("Do you have more students to add? (Y/N)");
String input = in.next();
if(input.equalsIgnoreCase("Y")){
}else{
counterMain=1;
}
}while(counterMain==0);
}
}
成绩册Class
package gradebook_multi_class;
import java.util.ArrayList;
public class GradeBook
{
private ArrayList<Student> students;
public GradeBook(){
students = new ArrayList<Student>();
}
public void addStudent(Student a){
students.add(a);
}
public Student find(String aName){
for(Student a: students){
if(a.getName().equals(aName))
return a;
}
return null;
}
}
学生Class
package gradebook_multi_class;
import java.util.ArrayList;
public class Student
{
private String studentName;
private ArrayList<String> grades = new ArrayList<String>();
public Student(String aName, ArrayList<String> list){
studentName = aName;
grades=list;
}
public String getName(){
return studentName;
}
public ArrayList<String> getGrades(){
return grades;
}
}
您已经完成了所有工作,在成绩册的查找方法中 class。
你只要这样做,在你的主要 class:
Student desiredStudent = book.find("Joe");
desiredStudent.getGrades();
Finally, print the names of all students and their final scores.
如果这是问题所在,就像 Student.getGrades()
添加一个方法 GradeBook.getStudents()
,
public ArrayList<Student> getStudents() {
return students.AsReadOnly();
}
然后在main()
方法中,
for (Student student : students) {
System.out.println("Student: " + student.getName());
System.out.print("Grades: ");
for (String grade : student.getGrades())
System.out.println(grade + " ");
}