2016-09-16 4 views
0

Ich versuche Array Inhalt mitArray nicht gedruckt Inhalt

toString() 

zu drucken, und ich kann nicht herausfinden, was ich falsch mache.

Die Ausgabe sollte 5 Zufallszahlen von 0 bis 100 sein, die ich in Array speichern werde, nachdem ich sie alle alle drucken muss.

Hier ist mein Code:

public class Ary { 

private int[] anArray; 
private int arraySize; 
private String numberAsString; 
Random r = new Random(); 

public Ary(int arraySize) { 
    this.anArray = printArray(); 
} 

public Ary() { 
    arraySize = 2; 
    printArray(); 
} 

public int getArraySize() { 
    return arraySize; 
} 

public void setArraySize(int arraySize) { 
    this.arraySize = arraySize; 
} 

public int[] printArray() { 
    // Assign anArray with a custom number 
    anArray = new int[arraySize]; 

    for(int numbers : anArray) { 
     anArray[numbers] = r.nextInt(100); 
     System.out.println(anArray[numbers] + " "); 
    } 
    return anArray; 
} 

@Override 
public String toString() { 
    return "Array = " + Arrays.toString(anArray); 
} 
} 

Ausgang:

[email protected] 

hier mit Arrays.toString mein Code():

public int[] printArray() { 
    // Assign anArray with a custom number 
    anArray = new int[arraySize]; 

    for(int numbers : anArray) { 
     anArray[numbers] = r.nextInt(100); 
     System.out.println(Arrays.toString(anArray)); 
    } 
    return anArray; 
} 

Ich habe bereits versucht Tonnen Methoden haben aber immer noch nicht herausgefunden .. Kannst du mir bitte erklären was mache ich falsch?

Vielen Dank!

+1

Java-Arrays überschreiben 'Object.toString()' nicht. Sie können 'Arrays.toString()' verwenden. –

+0

@ElliottFrisch Ich habe es schon versucht, gab mir immer noch die gleiche Ausgabe –

+1

@ S.Anthony Sind Sie sicher? 'Arrays.toString (anArray);' sollte gut funktionieren. – Li357

Antwort

2

Sie haben die Signatur toString() geändert (Sie rufen also nicht die von Ihnen definierte Methode auf). Stattdessen müssen Sie so etwas wie ,

@Override 
public String toString() { 
    return "Array = " + Arrays.toString(anArray); 
} 

Und Sie sollten wahrscheinlich anArray in Ihrem Konstruktor (en) und entfernen "printArray"

public Ary(int arraySize) { 
    this.arraySize = arraySize; 
    this.anArray = new int[arraySize]; 
    for (int i = 0; i < arraySize; i++) { 
     this.anArray[i] = r.nextInt(101); // <-- [0, 100], or [0, 101) 
    } 
} 

public Ary() { 
    this(5); // <-- use the other constructor. 
} 

initialisieren 1 Und die Überschreibung Annotation wird Sie auf thi warnen s Fehler.
Und Sie sollten nicht das Array drucken, bis es fertig initialisiert.

+0

Hm ... interessant. Jetzt bekomme ich das: 'Array = []' –

+0

@ S.Anthony Und wo/wie initialisierst du das Array jetzt? –

+0

Ich habe meinen Code aktualisiert –

1

Dies ist eine benutzerdefinierte Methode System.out.print(array.toString()); so überlastet die Sie toString() BUT für das Objekt in der Konsole Ausdrucken ist die Methode toString() (keine params), was aufgerufen wird immer ...

den int [] Parameter entfernen, und es wird in der Regel genannt, müssen Sie sicher auch den Körper des Verfahrens ändern

public String toString() { 
    return "Array = " + Arrays.toString(a); 
} 

teh Überschreibung Anmerkung Ussing immer empfohlen wird, wird es verhindern, dass Fehler während des Schreibens des Codes ....

+1

Vielleicht möchten Sie die Anmerkung '@ Override' dort, um die Methode des Objekts zu überschreiben – Li357

+0

Auch ist es nicht klar, woher' a' von hier kam. –