2

コードでエラーが発生します (これは割り当ての最後の行であり、解決できないようです)。これは addStudent メソッドにあります。オーバーロードされたコンストラクターにアクセスしようとすると、実際にはデフォルトのコンストラクターにアクセスしようとしており、通過する変数がないことが示されています。つまり、一言で言えば:

"studentArray[i] = new Student(名、姓、性別、sClass、sID);"

アクセスしようとしています:

"public void Student(){}"

しかし、私はそれがアクセスしたい:

"public void Student(文字列名、文字列姓、文字列性別、文字列 sClass、文字列 sID)"

助けてくれてありがとう!

-アンドレス

public void Student() 
{
    setFirstName("Unknown");
    setLastName("Unknown");
    setGender("Unknown");
    setClass("Freshman");
    setID("0000");
}

public void Student(String firstname, String lastname, String gender, String sClass, String sID) 
{
    setFirstName(firstname);
    setLastName(lastname);
    setGender(gender);
    setClass(sClass);
    setID(sID);
}

public static boolean addStudent(String firstname, String lastname, String gender, String sClass, String sID)
{
    for (int i=0; i<studentArray.length; i++) 
    {
        if (studentArray[i] == null)
        {
            studentArray[i] = new Student(firstname, lastname, gender, sClass, sID);
            totStudent++;
        }else {JOptionPane.showMessageDialog(null, "Max students reached.");}
    }
    return true;
}
4

5 に答える 5

4

「コンストラクター」を で宣言していますがvoid、実際にvoidはコンストラクターではなくメソッドを作成しています。したがって、コンパイラはデフォルトのコンストラクターしか使用できないため、そのエラーが発生します。したがってvoid、コンストラクターを定義しようとする場所では、キーワードを削除する必要があります。

于 2012-11-02T00:15:53.037 に答える
2

コンストラクターからキーワードを削除voidします。

public void Student(String firstname, String lastname, String gender, String sClass, String sID) 

への変更

public Student(String firstname, String lastname, String gender, String sClass, String sID) 

同様に

public void Student() 

への変更

public Student() 

コンストラクターには戻り値の型がありません。

于 2012-11-02T00:16:27.133 に答える
1

コンストラクターは、 new キーワードで使用すると、定義されているクラスと同じ型の新しいオブジェクトを返すため、戻り値の型がありません。

オブジェクト o = 新しいオブジェクト(); // Object コンストラクターを呼び出しています。

-- 編集 -- また、これを変更することをお勧めします

public Student() 
{
    setFirstName("Unknown");
    setLastName("Unknown");
    setGender("Unknown");
    setClass("Freshman");
    setID("0000");
}

public Student() 
{
    this("Unknown", "Unknown", "Unknown", "Freshman", "0000"); 
}
于 2012-11-02T00:19:08.060 に答える
0

コンストラクターには、void でさえない戻り値の型はありません。コンストラクターをvoidで宣言しているため、コンストラクターではなくメソッドになります

于 2012-11-02T00:17:04.433 に答える
0

from コンストラクターを削除すると、メソッドvoidを呼び出す必要がなくなりsetterます。以下のように、属性に直接アクセスできます。

 public void Student() 
 {
    this.firstName = "Unknown";
    this.lastName = "Unknown";
    this.gender = "Unknown";
    this.class = "Freshman";
    this.ID="0000";
 }

同様に

 public void Student(String firstname, String lastname, 
                                         String gender, String sClass, String sID) 
 {
    this.firstName = firstname;
    this.lastName = lastname;
    this.gender = gender;
    this.class = sClass;
    this.ID=sID;
 }

あなたはすべて準備ができているはずです。

于 2012-11-02T00:40:16.853 に答える