通过多个类

时间:2015-10-26 16:41:40

标签: java

我正在用Java做一些练习,并在我的教科书中有一个例子继续让我感到困惑。问题是:

“P8.7修改How To 7.1的成绩簿应用程序,以便它可以处理多个 学生们。首先,询问用户所有学生姓名。然后阅读所有分数 测验,提示每个学生的分数。最后,打印所有学生的姓名 和他们的最终分数。使用单个类,只使用静态方法。 P8.8使用多个类重复练习P8.7。修改GradeBook类以便它 收集Student类型的对象。每个这样的对象都应该有一个分数列表。“

我目前正在进行8.8练习。我理解如何使用多个类,并对如何解决此问题有一个大致的了解。之前我创建了一个充当“银行”的程序。该银行包含多个“账户”,这些账户作为“BankAccount”类的单独对象包含在内。每个帐户都有一个单独的余额和帐号。我能够在“银行”类中创建一个方法来按帐号搜索..这没有得到平衡,但只告诉帐户是否存在。

在我目前的问题中,我有一个GradeBook类,它将包含许多“Student”类的对象。这些“学生”中的每一个都将包含作为ArrayList保留的成绩列表。我遇到的问题是确切地知道如何为学生调用单个数组列表以便可以显示它。我已经尝试了很多方法,但似乎无法绕过我的想法。有人可以查看我的代码并告诉我如何在最终测试人员课程中检索学生的个人成绩列表?我的测试员课程不完整,因为我坚持这一步但我相信你可以得到这个... ..

GradeBookTester类

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



    }

}

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


}

学生班

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;

    }

}

2 个答案:

答案 0 :(得分:4)

您已经在GradeBook课程的find方法中完成了所有工作。

你的主要课程就是这样做的:

Student desiredStudent = book.find("Joe");
desiredStudent.getGrades();

答案 1 :(得分:0)

  

最后,打印所有学生的姓名及其最终分数。

如果这是问题,那么就像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 + " ");
}