2010-03-09 110 views
1
public class Arrys { 
    private int[] nums; 

    //Step 3 
    public Arrys (int arrySize) { 
     nums = new int[arrySize]; 
    } 

    public int [] getNums(){ 
     return nums; 
    } 
} 

測試類:這個java輸出是什麼意思?

public class TestArrys 
{ 
    public static void main(String args[]) 
    { 
     //Step 4 
     Arrys arry = new Arrys(10); 
     System.out.println("\nStep4 "); 
     for(int index = 0; index < arry.getNums().length; index++) { 
      System.out.print(arry.getNums()); 
     } 
    } 
} 

這是令人難以置信的簡單,這就是爲什麼我覺得我做的事情基本上是錯誤的。我只想顯示數組的值。

這就是我回來的。我完全失去了,我的書裏沒有任何東西可以解釋這一點,也沒有用Google搜索它的幫助。

 
Step4 
[[email protected][[email protected][[email protected][[email protected][[email protected][[email protected][[email protected][[email protected][[email protected][[email protected][[email protected] 

回答

8

你試圖打印陣列本身多次。此代碼:

for(int index = 0; index < arry.getNums().length; index++) { 
    System.out.print(arry.getNums()); 
} 

應(潛在的)這個是:

for(int index = 0; index < arry.getNums().length; index++) { 
    // println instead of print to get one value per line 
    // Note the [index] bit to get a single value 
    System.out.println(arry.getNums()[index]); 
} 

或者說更簡單:

for (int value : arry.getNums()) { 
    System.out.println(value); 
} 

當你的陣列上稱之爲toString(),它返回像[I @ 1ac88440其中[[表示它是一個數組,I表示數組元素類型是int,而@xxxxxxxx是內存中的地址。這是診斷性的,但在大多數情況下並不是很有用。

使用Arrays.toString可以獲得更有用的表示法。

+0

你說得很對。我瞥了一眼這個問題,看到了'[l @ 1ac88440',並認爲我知道這個問題是關於什麼的 - 但我錯了。 – 2010-03-09 17:40:28

+0

@mmyers:據我所見,你根本沒有錯...... – 2010-03-09 17:42:35

+0

也許我需要喝咖啡。 – 2010-03-09 17:44:03

2

嘗試

System.out.println(java.util.Arrays.toString(arry.getNums())); 

,而不是循環。

默認情況下,打印出數組不會給你一個非常有用的字符串。爲了獲得您希望的輸出類型,您可以遍歷數組並自行打印每個元素......或者您可以讓java.util.Arrays完成骯髒的工作。

0

它返回數組:

public int [] getNums() 

這個循環打印數組引用getNums()長的時間......

for(int index = 0; index < arry.getNums().length; index++) { 
    System.out.print(arry.getNums()); 
} 

試試這個:

int [] nums = arry.getNums(); 
for(int index = 0; index < nums.length; index++) { 
    System.out.print(arry.nums[index]); 
}