2297 Stimmen

Wie kann man ein Java-Array am einfachsten ausdrucken?

In Java überschreiben Arrays nicht die toString() Wenn Sie also versuchen, einen direkt zu drucken, erhalten Sie die Meldung className + '@' + das Hexadezimalzeichen der [hashCode](https://en.wikipedia.org/wiki/Java_hashCode()) des Arrays, wie definiert durch Object.toString() :

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

Aber normalerweise wollen wir eher etwas wie [1, 2, 3, 4, 5] . Wie lässt sich das am einfachsten bewerkstelligen? Hier sind einige Beispiele für Eingaben und Ausgaben:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]

9 Stimmen

Was soll die Darstellung für andere Objekte als Strings sein? Das Ergebnis des Aufrufs von toString? In Anführungszeichen oder nicht?

3 Stimmen

Ja, die Objekte werden durch ihre toString()-Methode und ohne Anführungszeichen dargestellt (die Beispielausgabe wurde gerade bearbeitet).

2 Stimmen

In der Praxis, eng verbunden mit stackoverflow.com/questions/29140402/

4voto

hasham.98 Punkte 73

Die For-each-Schleife kann auch verwendet werden, um Elemente eines Arrays zu drucken:

int array[] = {1, 2, 3, 4, 5};
for (int i:array)
    System.out.println(i);

0 Stimmen

@firephil System.out.println(a[i]); wird mit einer gewöhnlichen for-Schleife verwendet, in der der Index "i" erstellt und der Wert bei jedem Index gedruckt wird. Ich habe eine "for each"-Schleife verwendet. Probieren Sie es aus, ich hoffe, Sie verstehen, worauf ich hinaus will.

4voto

Haim Raman Punkte 10895

Die Verwendung von org.apache.commons.lang3.StringUtils.join(*) Methoden kann eine Option sein
Zum Beispiel:

String[] strArray = new String[] { "John", "Mary", "Bob" };
String arrayAsCSV = StringUtils.join(strArray, " , ");
System.out.printf("[%s]", arrayAsCSV);
//output: [John , Mary , Bob]

Ich habe die folgende Abhängigkeit verwendet

<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>

0 Stimmen

Das Hinzufügen einer Abhängigkeit wegen etwas Trivialem, das in zwei Codezeilen erledigt werden kann, ist ein schreiendes Antipattern.

0 Stimmen

Commons-lang3 ist eine sehr verbreitete Abhängigkeit, und es ist zu beachten, dass diese Antwort dort gegeben wurde, wo die meisten Leute Java 8 nicht verwendet haben

0 Stimmen

Immer noch die beste Lösung, wie sie auch in stackoverflow.com/questions/38425623/ commons-lang ist natürlich sehr beliebt und sollte verwendet werden, anstatt es selbst zu implementieren. Solche Hilfsmethoden müssen getestet werden und sollten auch für andere Projekte zugänglich sein. Solange primitive Arrays nicht einfach behandelt werden können, ist eine Bibliothek wie commons-lang mit überladenen Methoden für mich der beste und effizienteste Weg, dieses Problem zu lösen.

3voto

Jean Logeart Punkte 50463

Zusätzlich zu den Antworten ist es möglich, das Objekt als JSON-String zu drucken.

Mit Jackson:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
System.out.println(ow.writeValueAsString(anyArray));

Gson verwenden:

Gson gson = new Gson();
System.out.println(gson.toJson(anyArray));

0 Stimmen

Das ist mein Job. Damit können Sie beliebig komplexe Strukturen drucken, solange sie in JSON kodierbar sind. Ich achte immer darauf, "pretty" zu verwenden. Ist das in Ihrem zweiten Beispiel der Fall? Ich würde denken, dass man eine "pretty"-Option anklicken muss, um das zu erreichen.

3voto

fjnk Punkte 62
// array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};

System.out.println(Arrays.toString(intArray));

output: [1, 2, 3, 4, 5]

// array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};

System.out.println(Arrays.toString(strArray));

output: [John, Mary, Bob]

3voto

Chiara Tumminelli Punkte 370

Hier eine mögliche Druckfunktion:

  public static void printArray (int [] array){
        System.out.print("{ ");
        for (int i = 0; i < array.length; i++){
            System.out.print("[" + array[i] + "] ");
        }
        System.out.print("}");
    }

Zum Beispiel, wenn main wie folgt aussieht

public static void main (String [] args){
    int [] array = {1, 2, 3, 4};
    printArray(array);
}

die Ausgabe lautet { [1] [2] [3] [4] }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X