2013-03-25 121 views
13

我試圖將String[][]轉換爲字符串以在GUI中顯示。這裏是我的代碼:將二維數組轉換爲字符串

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

下面是它產生:

[[Ljava.lang.String;@19b8858

我怎樣才能得到更多的東西可讀?

+4

您正在獲取數組的參考。您應該遍歷所有元素並將它們連接起來以獲得所需的輸出。 – 2013-03-25 15:37:42

回答

12

如果要創建數組的單行表示形式,可以使用Arrays.deepToString


如果你想創建多行表示你可能會需要遍歷所有行和追加的Array.toString(array[row])結果像

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

由於Java 8,你甚至可以使用StringJoiner與自動將添加分隔符爲您提供:

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

或使用流

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

嘗試Arrays.toString(Object[] a)

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

上面的代碼將打印的每個陣列中換行二維陣列tableBornes

+0

@LuiggiMendoza:更新了答案:) – Parth 2013-03-25 15:44:06

15

嘗試一個行版本

Arrays.deepToString(tableBornes); 

或者多版本

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

thnks,我試過這個,但是我還想排隊,在一行中打印每個列表?這個怎麼做? – 2013-03-25 16:06:53

3

如何:

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

如果要插入空格或項目之間的一些其他的角色只是在內部循環中添加另一個append調用。

+0

是的,我想添加空間,並返回到該行,以獲得表格的模型。如果有辦法直接打印表格,我有模型嗎? – 2013-03-25 16:08:56

相關問題