2013-03-25 10 views
13

Ich versuche, eine String[][] in eine Zeichenfolge für die Anzeige in einer GUI zu konvertieren. Hier ist mein Code:konvertieren zweidimensionale Array in String

String[][] tableBornes = SearchPropertiesPlugin.FillBornesTable(); 
String table = tableBornes.toString(); 

Hier ist, was es produziert:

[[Ljava.lang.String;@19b8858

Wie kann ich etwas besser lesbar zu bekommen?

+4

Sie erhalten die Referenz des Arrays. Sie sollten alle Elemente durchlaufen und verketten, um die gewünschte Ausgabe zu erhalten. –

Antwort

12

Wenn Sie eine einzeilige Darstellung des Arrays erstellen möchten, können Sie Arrays.deepToString verwenden.


Im Fall, dass Sie mehrzeilige Darstellung erstellen Sie wahrscheinlich

String[][] array = { { "a", "b" }, { "c" } }; 

String lineSeparator = System.lineSeparator(); 
StringBuilder sb = new StringBuilder(); 

for (String[] row : array) { 
    sb.append(Arrays.toString(row)) 
     .append(lineSeparator); 
} 

String result = sb.toString(); 

Da Java 8 Sie selbst StringJoiner mit automatisch alle Zeilen iterieren und fügen Ergebnis Array.toString(array[row]) wie

benötigen können hinzufügen Trennzeichen für Sie:

StringJoiner sj = new StringJoiner(System.lineSeparator()); 
for (String[] row : array) { 
    sj.add(Arrays.toString(row)); 
} 
String result = sj.toString(); 

oder mit Hilfe von Streams

String result = Arrays 
     .stream(array) 
     .map(Arrays::toString) 
     .collect(Collectors.joining(System.lineSeparator())); 
3

Versuchen Arrays.toString(Object[] a)

for(String[] a : tableBornes) 
     System.out.println(Arrays.toString(a)); 

Der obige Code wird jedes Array in einem zweidimensionalen Array tableBornes in Newline drucken.

+0

@LuiggiMendoza: die Antwort aktualisiert :) – Parth

15

versuchen Sie eine Zeilenversion

Arrays.deepToString(tableBornes); 

oder mehrzeilige Version

StringBuilder sb = new StringBuilder(); 
for(String[] s1 : tableBornes){ 
    sb.append(Arrays.toString(s2)).append('\n'); 
} 
String s = sb.toString(); 
+0

thnks, habe ich das versucht, aber ich möchte auch in der Zeile zurück, um jede Liste in einer Zeile zu drucken? Wie macht man das? –

3

Wie wäre es damit:

StringBuilder sb = new StringBuilder(); 
for(String[] s1 : tableBornes){ 
    for(String s2 : s1){ 
     sb.append(s2); 
    } 
} 
String table = sb.toString(); 

Wenn Sie Leerzeichen einfügen möchten oder ein anderes Zeichen zwischen den Waren Fügen Sie einen weiteren append Aufruf innerhalb der inneren Schleife hinzu.

+0

Ja, ich möchte Leerzeichen hinzufügen und auch zu der Zeile zurückkehren, um das Modell der Tabelle zu haben. bin ich wundernd, wenn es eine Möglichkeit gibt, die Tabelle direkt zu drucken, da ich das Modell habe? –

Verwandte Themen