-1

エラーは発生しませんが、コースを追加できませんでした

    //in my Course class i use equals method to check whether they are the sam
    public boolean equals (Course other){
    Course c = (Course) other;
    if(c != null){
        if (this.name.equals(c.name) && this.instructor.equals(c.instructor) && this.numberOfSection == (c.numberOfSection) && this.year == (c.year))
            return true;
        else
            return false;   
        }
    else 
        return false;
}

//in my CourseCatalog class i use the equals method in Course and if they are not same 
// i add the course to the catalog
public void addCourse (Course other) {
    if(other != null){
        if( !other.equals(course1) && !other.equals(course2) && !other.equals(course3) && !other.equals(course4))
        {
            if (noOfCourse == 0){
                course1 = new Course(other);
                noOfCourse ++;
            }
            if (noOfCourse == 1){
                course2 = new Course(other);
                noOfCourse ++;
            }
            if (noOfCourse == 2){
                course3 = new Course(other);
                noOfCourse ++;
            }
            if(noOfCourse == 3){
                course4 = new Course(other);
                noOfCourse ++;
            }   
        }
    }
}

            //the following code is what i do in the tester class 
            CourseCatalog myCourseCatalog  = new CourseCatalog();
    Course course1 = new Course();
    course1.setName("Math101");
    course1.setInstructor("Jack Smith");
    course1.setYear(2007);
    course1.setNumberOfSection(3);
    myCourseCatalog.addCourse(course1);

            // i add a different course 
    Course course2 = new Course("Cs101", "David Brown", 2003 ,3);
    myCourseCatalog.addCourse(course2);
    Course copyCourse = new Course(course2);
    myCourseCatalog.addCourse(copyCourse);

ただし、プログラムはこのように出力されます。

Name: Math101
Instructor: Jack Smith
Year: 2007
Number Of Sections: 3Name: Math101
Instructor: Jack Smith
Year: 2007
Number Of Sections: 3Name: Math101
Instructor: Jack Smith
Year: 2007
Number Of Sections: 3Name: Math101
Instructor: Jack Smith
Year: 2007
Number Of Sections: 3

つまり、なぜ私はコースを追加できないのですか?私はJavaの新入生なので、助けていただければ幸いです。

4

2 に答える 2

2

うわーこれは美しさです...

すべてifが真であり、実行されることを確認するif-elseのチェーンを使用しています。最初ifにチェックしnoOfCourse == 0てからインクリメントします。noOfCourse==1次のものでは、増分のためにどちらが真になるかを確認します。

したがって、addCourse初めてメソッドを呼び出すと、すべてのコースがすでに設定されています。

交換してください

if (noOfCourse == 0){
    course1 = new Course(other);
    noOfCourse ++;
}
if (noOfCourse == 1){
    course2 = new Course(other);
    noOfCourse ++;
}
if (noOfCourse == 2){
    course3 = new Course(other);
    noOfCourse ++;
}
if(noOfCourse == 3){
    course4 = new Course(other);
    noOfCourse ++;
}   

if (noOfCourse == 0){
    course1 = new Course(other);
    noOfCourse ++;
} else if (noOfCourse == 1){
    course2 = new Course(other);
    noOfCourse ++;
} else if (noOfCourse == 2){
    course3 = new Course(other);
    noOfCourse ++;
} else if(noOfCourse == 3){
    course4 = new Course(other);
    noOfCourse ++;
}   
于 2012-09-07T04:43:42.237 に答える
1

問題は、実際にカスケードのif問題が発生していることです。下記参照...

if (noOfCourse == 0){
    course1 = new Course(other);
    noOfCourse ++;
}
if (noOfCourse == 1){
    course2 = new Course(other);
    noOfCourse ++;
}
if (noOfCourse == 2){
    course3 = new Course(other);
    noOfCourse ++;
}
if(noOfCourse == 3){
    course4 = new Course(other);
    noOfCourse ++;
}   

何があっても、それはそれをインクリメントするので、そのすぐ下noOfCourseを満足させます。ifこれにより、コースが複数のコーススロットを埋めます。解決策はを使用することelse ifです。

if (noOfCourse == 0){
    course1 = new Course(other);
    noOfCourse ++;
} else if (noOfCourse == 1) {
    course2 = new Course(other);
    noOfCourse ++;
} else if (noOfCourse == 2) {
    course3 = new Course(other);
    noOfCourse ++;
} else if (noOfCourse == 3) {
    course4 = new Course(other);
    noOfCourse ++;
}   

このように、コースは1回だけ追加されます。:-)

ちなみに、実際には配列かListここを使うべきです。

final Count[] courses = new Course[4];
final int coursesAssigned = 0;
...
if (coursesAssigned < 4) {
  courses[coursesAssigned++] = new Course(other);
}

さらに、なぜあなたはコピーしているのotherですか?

于 2012-09-07T04:45:06.900 に答える