0

私は他の配列コードを見てきましたが、ここに私が得たものがあります。CollegeCollege コースの courseID を配列に設定しようとしています。Student.java に配列を設定する必要があります

public class CollegeCourse {

private static String courseID;
private static int creditHours;
private static char grade;

public static void setCourseID(String course){
    courseID = course;
}
public static String getCourseID(){
    return courseID;
}
public static void setCreditHours(int CH){
    creditHours = CH;
}
public static int getCreditHours(){
    return creditHours;
}
public static void setGrade(char g){
    grade = g;
}
public static char getGrade(){
    return grade;
}


public class Student {

private static int IDnumber;
private static CollegeCourse[] course = new CollegeCourse[5];

public static void setIDnumber(int x){
    IDnumber = x;
}
public static int getIDnumber(){
    return IDnumber;
}
public static String getCourse(int x){
    return course[x].getCourseID();
}
public static void setCourse(CollegeCourse newCourse, int ID){
    CollegeCourse.setCourseID = newCourse[ID];
}
}
4

2 に答える 2

0

学生が id 5 のコースを受講するようにコーディングしようとしているように見えるかもしれません。おそらく、コースの ID に基づいて引数を取るコンストラクターをクラスに持たせる必要があります。

フィールドを静的にする必要がある理由がわかりませんが、何らかの理由で必要な場合は、自由に静的にしてください。

public class CollegeCourse {

private String courseID;
private int creditHours;
private char grade;

public CollegeCourse(String courseID) {
    this.courseID = courseID;
}

...

public class Student {

...
private static CollegeCourse[] course = new CollegeCourse("5");

...
于 2013-03-27T23:42:34.810 に答える
0

より良い設計は次のようになると思います。

public class CollegeCourse {

    private final String courseId;

    private final int creditHours;

    public CollegeCourse(final String courseId, int creditHours) {
        this.courseId = courseId;
        this.creditHours = creditHours;
    }

    public String getCourseId() {
        return courseId;
    }

    public int getCreditHours() {
        return creditHours;
    }

    @Override
    public boolean equals(Object o) {
        if (o == this) { return true; }
        if (!(o instanceof CollegeCourse)) { return false; }
        CollegeCourse cc = (CollegeCourse)o;
        return courseId.equals(cc.courseId) 
            && creditHours == cc.creditHours;                   
    }

    @Override
    public int hashCode() {
       int result = 17;
       result = 31 * result + courseId.hashCode();
       result = 31 * result + creditHours;
       return result;
    }
};

public enum Grade { A, B, C, D, E };

public class Student {

    private final String id;

    private final Map<CollegeCourse, Grade> course2GradeMap = new HashMap<>();

    public Student(final String id) {
        this.id = id;       
    }

    public Grade getGrade(final CollegeCourse course) {
        return couse2GradeMap.get(course);
    }

    public void addCollegeCourse(final CollegeCourse course, Grade grade) { 
        course2GradeMap.put(course, grade);
    }

    public Collection<CollegeCourse> getCollegeCourses() {
        return Collections.unmodifiableCollection(course2GradeMap.values());
    }
};

次のように使用します。

Student student = new Student("001");
student.addCollegeCourse(new CollegeCourse('alg', 100), Grade.A);
student.addCollegeCourse(new CollegeCourse('stat', 100), Grade.C);
于 2013-03-27T23:59:16.740 に答える