2017-04-23 83 views
0

我對Java很陌生,對於獲取設置數組感到困惑。只是超級基本的代碼,我想更新學生類中的成績數組。我使用double []輸入數組設置Graddes,但是當我調用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(ted.getGrades()); 

你必須使用Arrays.toString(array)這樣的:

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

明白了,謝謝你們! –

+0

不用理會@ dan_jen1 –

0

的Bec ause你返回一個數組。

getGrades()[0] 

獲得的第一個元素在你的陣列

0

打印數組在Java中返回其哈希碼,這是什麼[[email protected]是。您需要指定索引in getGrades()或使用Arrays.toString(ted.getGrades())將陣列轉換爲可打印格式。

+1

這個數字是哈希碼,而不是內存位置。 – Nevay

0

Java中的對象會覆蓋名爲toString()的函數,該函數返回在該類中定義的對象的任何字符串表示形式,並且在將對象實例傳遞給print方法時隱式調用toString()。原始數組不返回非常有用的字符串表示形式 - 只是散列對象以放置(例如)HashMap時使用的hashCode。但是,Arrays實用程序類包含一個更有用的toString()函數,您必須顯式調用該函數,並將該數組作爲參數傳遞。

Arrays.toString(ted.getGrades()); 

我建議計算如何訪問各個等級數組的元素而不返回它。在沒有控制的情況下留下訪問內部對象數據的方法通常是一個糟糕的主意。如果你保存了對它的引用,你可以決定在你的程序的其他地方打開內部數組。一種可能性是將等級數組傳遞給對象構造函數,並讓該構造函數完成該數組的完整副本。然後,獲取單個數組索引訪問的getter和setter,而不是訪問整個數組。