2017-10-06 41 views
-1

這究竟是爲什麼,爲什麼不是它給我* ThisIsWhatItShouldBeJava數組錯誤隊列表

代碼

class ArreyTable{ 
    public static void main(String OKM[]){    
     System.out.println("Index\tValue");   
     int px[] = {144,240,360,480,720};    
     for(int counter=0; counter<px.length; counter++){   
      System.out.println(counter + "\t" + px);   
     }   
    } 
} 

CMD結果

Index  Value 
0   [[email protected] 
1   [[email protected] 
2   [[email protected] 
3   [[email protected] 
4   [[email protected] 

ThisIsWhatItShouldBe

Index Value 
0   144 
1   240 
2   360 
3   480 
4   720 

回答

3

要打印的整個陣列,而不是它的相關元素,用戶可以通過[]運營商訪問:

for(int counter=0; counter<px.length; counter++){ 
    System.out.println(counter + "\t" + px[counter]); 
    // Here ------------------------------^ 
} 
1

在代碼塊

for(int counter=0; counter<px.length; counter++){   
    System.out.println(counter + "\t" + px);   
}   

您每次都將數組px轉換爲一個字符串,對於內部JVM原因,這是一個[[email protected]

你必須表明陣列上的指數

for(int counter=0; counter<px.length; counter++){   
    System.out.println(counter + "\t" + px[counter]);   
}   

這將使期望的結果。

另外,你可以取代printlnprintf

for(int counter=0; counter<px.length; counter++){   
    System.out.printf("%2d: %3d%n", counter, px[counter]);   
}   
0

只是改變這一行: 的System.out.println(計數器+ 「\ t」 的+ PX [計數器]);

所以它會知道什麼返回值)

0

您最初打印整個像素數組對象。正在打印的是數組對象的toString()函數的輸出。

Object.toString()方法返回一個字符串,它由類的名稱,@符號和十六進制對象的哈希碼組成。

當您使用px [counter]時,它引用該索引處的元素值。

正確的解決辦法是:

for(int counter=0; counter<px.length; counter++){   
     System.out.println(counter + "\t" + px[counter]);   
    }