0

こんにちは、コース名用に作成した既存のクラスに文字列インストラクター名を追加する際に問題があります。バグを修正するのを手伝ってもらえますか - これにより 8 つのエラーが発生します

import java.util.Scanner;

public class GradeBook {

private String courseName, instructorName;

public GradeBook ( String name )
{
    courseName = name; 
}

public GradeBook ( String name )
{
    instructorName = name; 
}

public void setCourseName ( String name )
{
    CourseName = name;
}

public void setInstructorName ( String name )
{
    InstructorName = name;
}

public void getCourseName ( String name )
{
    return courseName;
}

public void getInstructorName ( String name )
{
    return instructorName;
}

public void displayMessage();
{
    System.out.printf( "Welcome to the grade book for\n%s!\n\n",
        getCourseName() );
    System.out.printf( "Your instructor for this course is\n%s!\n\n",
        getCourseName() );
}

}

4

2 に答える 2

4

Java言語仕様から

クラスでオーバーライドと同等のシグネチャ (§8.4.2) を持つ 2 つのコンストラクターを宣言すると、コンパイル時エラーが発生します。

2 つのメソッド (またはコンストラクター) は、名前と引数の型が同じ場合、同じシグネチャを持ちます。

あなたの場合、 type の 1 つのパラメーターを取る 2 つのコンストラクターがありますString。つまり、同じ署名を持つ 2 つのコンストラクターがあり、コンパイラーはそれを許可しません。

2 つのパラメーターを受け取る1 つのコンストラクターを使用するStringか、セッターを使用します。

于 2013-10-08T01:12:45.530 に答える
0
public GradeBook ( String name )
{
    courseName = name; 
}

public GradeBook ( String name )
{
    instructorName = name; 
}

コンストラクター内の 2 つの異なるインスタンス変数に値を割り当てましたが、JVM の場合は同じ署名を持ちます。同じ署名を持つ 2 つのコンストラクターを持つことはできません。2 つのパラメーターを要求するコンストラクターを作成するか、両方のインスタンス変数に同じ値を割り当てる必要があります。

    public GradeBook ( String cName, String iName )
    {
        courseName = cName; 
        instructorName = iName; 
    }
于 2013-10-08T06:26:42.553 に答える