2017-04-23 6 views
0

私はJavaにとって非常に新しいので、設定配列を取得するのは混乱します。ちょうどスーパー基本コード私は学生クラスのグレードの配列を更新したいです。私はdouble [] input配列でsetGradesを設定しますが、getGradesを呼び出すと、それは迷惑メールを返します:[[email protected]ダブルスの配列を設定して取得する

私はそれが私が値によって、あなたのアレイとプリント値を投げるループにあなたが持っているあなたの配列の値を印刷するには

public class Student 
{ 
    private double[] grades; 

    public void setGrades(double[] grades) 
    { 
     this.grades = grades; 
    } 

    public double[] getGrades() 
    { 
     return grades; 
    } 

    public static void main(String[] args) 
    { 
     double[] input = {87.54, 67.45}; 
     Student ted = new Student(); 
     ted.setGrades(input); 
     System.out.println(ted.getGrades()); 
    } 
} 

答えて

3

を欠けている超簡単なものだが、知っているので、代わりに良い方法があります

System.out.println(Arrays.toString(ted.getGrades())); 
+1

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

+0

あなたは大歓迎です@ dan_jen1 –

0

ベック:あなたはこのようなArrays.toString(array)を使用する必要が

System.out.println(ted.getGrades()); 

あなたは配列を返します。

getGrades()[0] 

Javaで配列を印刷するあなたのアレイ

0

の最初の要素を取得し[[email protected]が何であるかでそのハッシュコードを返します。アレイを印刷可能なフォーマットにするには、インデックスin getGrades()を指定するか、Arrays.toString(ted.getGrades())を使用する必要があります。

+1

数字はメモリの場所ではなく、ハッシュコードです。 – Nevay

0

Javaのオブジェクトは、toString()という関数をオーバーライドします。この関数は、オブジェクトのインスタンスをクラスに定義したものを返します。toString()は、オブジェクトのインスタンスをprintメソッドに渡すと暗黙的に呼び出されます。プリミティブ配列は非常に有用な文字列表現を返さず、オブジェクトをハッシュして(例えば)HashMapに配置するときに使われるhashCodeだけです。しかし、Arraysユーティリティクラスには、配列を引数として渡す明示的に呼び出さなければならないより便利な関数toString()が含まれています。

Arrays.toString(ted.getGrades()); 

グレード配列の個々の要素にアクセスする方法を考えてみましょう。一般的に、コントロールなしで内部オブジェクトデータにアクセスする方法を残すことは、悪い考えです。参照を保存しておけば、プログラム内のどこか他の場所にある配列を壊すことになります。 1つの可能性は、grades配列をオブジェクトコンストラクタに渡し、そのコンストラクタにその配列の完全コピーを持たせることです。次に、配列全体へのアクセスではなく、個々の配列インデックスアクセス用のゲッターとセッターを用意します。

関連する問題