Java - 在ArrayList中添加2个对象

时间:2014-12-04 12:26:27

标签: java object arraylist

我对编程很陌生,所以我需要帮助。我想将SubjectGrades添加到studentList ArrayList。但我认为我做错了。我应该怎么做才能将SubjectGrades添加到ArrayList?感谢

这是我的部分主要课程。

import java.util.Scanner;
import java.util.ArrayList;

public class Main {

private static Scanner in;

public static void main(String[] args) {

    ArrayList<Student> studentList = new ArrayList<Student>();
    //ArrayList<SubjectGrades> Grades = new ArrayList<SubjectGrades>();
    in = new Scanner(System.in);
    String search, inSwitch1, inSwitch2;
    int inp;

    do {
        SubjectGrades sGrade = new SubjectGrades();
        Student student = new Student();

        System.out.println("--------------------------------------");
        System.out.println("What do you want to do?");
        System.out.println("[1]Add Student");
        System.out.println("[2]Find Student");
        System.out.println("[3]Exit Program");
        System.out.println("--------------------------------------");

        inSwitch1 = in.next();

        switch (inSwitch1) {

        case "1":

            System.out.println("Input student's Last Name:");
            student.setLastName(in.next());
            System.out.println("Input student's First Name:");
            student.setFirstName(in.next());
            System.out.println("Input student's course:");
            student.setCourse(in.next());
            System.out.println("Input student's birthday(mm/dd/yyyy)");
            student.setBirthday(in.next());
            System.out.println("Input Math grade:");
            student.subjectGrade.setMathGrade(in.nextDouble());
            System.out.println("Input English grade:");
            student.subjectGrade.setEnglishGrade(in.nextDouble());
            System.out.println("Input Filipino grade:");
            student.subjectGrade.setFilipinoGrade(in.nextDouble());
            System.out.println("Input Java grade:");
            student.subjectGrade.setJavaGrade(in.nextDouble());
            System.out.println("Input SoftEng grade:");
            student.subjectGrade.setSoftEngGrade(in.nextDouble());
            studentList.add(student);
            studentList.add(student.setSubjectGrade(sGrade)); //Here it is that I want to add
            break;
            //end case 1

这是我的学生班。

package santiago;

public class Student {

private String lastName;
private String firstName;
private String course;
private String birthday;

SubjectGrades subjectGrade = new SubjectGrades();



public SubjectGrades getSubjectGrade() {
    return subjectGrade;
}

public void setSubjectGrade(SubjectGrades subjectGrade) {
    this.subjectGrade = subjectGrade;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getCourse() {
    return course;
}

public void setCourse(String course) {
    this.course = course;
}

public String getBirthday() {
    return birthday;
}

public void setBirthday(String birthday) {
    this.birthday = birthday;
}

}

我的SubjectGrades课程

package santiago;

public class SubjectGrades{


Double mathGrade, englishGrade, filipinoGrade, javaGrade, softEngGrade, weightedAverage;

public Double getMathGrade() {
    return mathGrade;
}

public void setMathGrade(Double mathGrade) {
    this.mathGrade = mathGrade;
}

public Double getEnglishGrade() {
    return englishGrade;
}

public void setEnglishGrade(Double englishGrade) {
    this.englishGrade = englishGrade;
}

public Double getFilipinoGrade() {
    return filipinoGrade;
}

public void setFilipinoGrade(Double filipinoGrade) {
    this.filipinoGrade = filipinoGrade;
}

public Double getJavaGrade() {
    return javaGrade;
}

public void setJavaGrade(Double javaGrade) {
    this.javaGrade = javaGrade;
}

public Double getSoftEngGrade() {
    return softEngGrade;
}

public void setSoftEngGrade(Double softEngGrade) {
    this.softEngGrade = softEngGrade;
}

public Double getWeightedAverage(){
    weightedAverage = ((mathGrade + englishGrade + filipinoGrade + javaGrade + softEngGrade)*3) / 15;

    return weightedAverage;
}

public String getScholarStatus(){
    String status = "";

    if(weightedAverage <= 1.5) {
        status = "full-scholar";

    } else if (weightedAverage <= 1.75){
        status = "half-scholar" ;
    } else {
        status = "not a scholar";

    }

    return status;
}
}

3 个答案:

答案 0 :(得分:0)

你的错误:

studentList.add(student);
studentList.add(student.setSubjectGrade(sGrade));

您正在添加学生,然后尝试添加voidsetSubjectGrade的返回值为void,因此不会添加任何内容: 只是做:

student.setSubjectGrade(sGrade);
studentList.add(student);

其中sGrade是类型为Object的{​​{1}},其填充方式相同 SubjectGrades已填充。

答案 1 :(得分:0)

使用

ArrayList <SubjectGrades>  list;

在学生班而不是SubjectGrades subjectGrade = new SubjectGrades();

并生成getter和setter

答案 2 :(得分:0)

只需删除此行:

studentList.add(student.setSubjectGrade(sGrade)); //Here it is that I want to add

您完成它的方式,学生对象已经具有subjectGrade属性及其值设置。

您可以使用studentList.get(0).getSubjectGrade()

访问它