2011-12-14 13 views
-2

なぜこのクラスはコンパイルされませんか?私のクラス定義に何が問題なのですか?

class Exam { 

private int score; 

    // constructor initializes score to 99 
    public void Exam() { 
     score = 99; 
    } 

    // returns the current value of score 
    private int getScore() { 
     return score; 
    } 

    // returns the String representation of the Object 
    public String toString() { 
     return "The score is " + getScore(); 
    } 
} 
+2

どのようなエラーメッセージが表示されますか? –

+1

コンパイラのエラーメッセージを私たちと共有しないのはなぜですか? – Codo

+0

@Codo:それはゲームです。 –

答えて

7

コンストラクタには戻り値の型はありません。空でもない。

public Exam() { 
    score = 99; 
} 
+1

Damned ...私は、ほんの約7000ミリ秒早いです。 –

+0

ありがとうございました – user703430

+0

@ user703430 Markの答えが解決策だったら、彼の答えに正しい答えを記入してください。 –

3

コンストラクトはvoidキーワードを含むべきではない:

public Exam() { 
    score = 99; 
} 

コンストラクタは、リファレンスに新しく作成されたオブジェクトを返します。しかし、あなたはそれを書く必要はありません。だからそれはvoidだと思っても間違っています。

2

コンストラクターには戻り値の型は必要ありません。 voidを削除し、設定する必要があります。

1

コンストラクタでは、voidを使用しません。主な問題は、不足しているパッケージ宣言です

public Exam() { 
    score = 99; 
} 
0

はとしてコンストラクタを書きます。

package yourpkg; 

class Exam { 

また、Exam()のための戻り値の型は、その機能の代わりに、コンストラクタになり、警告になります。

0

具体的な問題に関連していないだけの提案:

private int score; 

// returns the current value of score 
private int getScore() { 
    return score; 
} 

あなたがそれprivate維持するつもりならばgetScore()ことを持つにはポイントがありません。それをpublicにします。

また、何らかの方法を無効にすることを意図している場合はいつも、@Override注釈を使用してください。あなたがそうしていない場合に備えて、コンパイラはあなたに知らせるでしょう。つまり、バグの防止です。

// returns the String representation of the Object 
@Override 
public String toString() { 
    return "The score is " + getScore(); 
} 
関連する問題