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

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

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

classe Test:Que signifie cette sortie 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()); 
     } 
    } 
} 

Il est incroyablement simple, c'est pourquoi je pense que je fais quelque chose de fondamentalement mauvais. Tout ce que je veux, c'est afficher la valeur du tableau.

Voici ce que je récupère. Je suis totalement perdu, il n'y a rien dans mon livre qui explique cela, ni googler cela aide.

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

Répondre

8

Vous essayez pour imprimer le tableau lui-même sur plusieurs fois. Ce code:

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

devrait (potentiellement) être ceci:

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]); 
} 

Ou plutôt plus simplement:

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

Lorsque vous appelez toString() sur un tableau, il retourne quelque chose comme [I @ 1ac88440 où [indique que c'est un tableau, I indique que le type d'élément de tableau est int, et @xxxxxxxx est l'adresse en mémoire. C'est un diagnostic, mais pas vraiment utile dans la plupart des cas. Utilisez la Arrays.toString pour obtenir une représentation plus utile.

+0

Vous avez tellement raison. J'ai jeté un coup d'œil à la question, vu le '[l @ 1ac88440', et j'ai pensé que je savais de quoi il s'agissait - mais j'avais tort. –

+0

@mmyers: Vous n'étiez pas vraiment du tout mal, pour autant que je puisse voir ... –

+0

Peut-être que j'ai besoin de prendre un café. –

2

Essayez

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

au lieu de la boucle.

Par défaut, l'impression d'un tableau ne vous donnera pas une chaîne très utile. Pour obtenir le type de sortie que vous espérez, vous pouvez parcourir le tableau et imprimer chaque élément vous-même ... ou vous pouvez laisser java.util.Arrays faire le sale boulot.

0

Il retourne un tableau:.

public int [] getNums() 

Cette boucle tableau imprime référence getNums() temps de longueur ...

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

Essayez ceci:

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