2013-03-25 18 views
13

Próbuję przekonwertować String[][] na ciąg znaków do wyświetlenia w GUI. Oto mój kod:przekonwertuj dwuwymiarową tablicę na ciąg

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

Oto co produkuje:

[[Ljava.lang.String;@19b8858

Jak mogę dostać coś bardziej czytelny?

+4

Dostajesz odniesienie do tablicy. Powinieneś przetestować wszystkie elementy i połączyć je, aby uzyskać pożądany wynik. –

Odpowiedz

12

Jeśli chcesz utworzyć jednolinijkową reprezentację macierzy, możesz użyć Arrays.deepToString.


W przypadku, gdy chcesz stworzyć multi-line reprezentacji prawdopodobnie będziesz musiał iteracyjne nad wszystkich wierszy i dołącz wynik Array.toString(array[row]) jak

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(); 

Ponieważ Java 8 można nawet użyć StringJoiner z automatycznie dodać ogranicznik dla Ciebie:

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

lub wykorzystujące strumienie

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

Spróbuj Arrays.toString(Object[] a)

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

Powyższy kod będzie drukować każdą tablicę w dwuwymiarowej tablicy tableBornes w nowej linii.

+0

@ LuiggiMendoza: zaktualizowałem odpowiedź :) – Parth

15

spróbować jedna wersja linii

Arrays.deepToString(tableBornes); 

lub multilinii wersję

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

thnks, próbowałem tego, ale chcę również wrócić w kolejce, aby wydrukować każdą listę w jednym wierszu? jak to zrobić? –

3

Jak o tym:

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

Jeśli chcesz wstawić spacje lub jakiś inny znak między przedmiotów tylko dodaj kolejne wywołanie append w wewnętrznej pętli.

+0

Tak, chcę dodać spację, a także wrócić do linii, aby mieć model tabeli. zastanawiam się, czy istnieje sposób drukowania bezpośrednio, ponieważ mam model? –

Powiązane problemy