22

我正在尝试将 a 转换String[][]为字符串以在 GUI 中显示。这是我的代码:

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

这是它产生的结果:

[[Ljava.lang.String;@19b8858

我怎样才能得到更具可读性的东西?

4

4 回答 4

26

试试单行版本

Arrays.deepToString(tableBornes);

或多行版本

StringBuilder sb = new StringBuilder();
for(String[] s1 : tableBornes){
    sb.append(Arrays.toString(s2)).append('\n');
}
String s = sb.toString();
于 2013-03-25T15:41:33.830 回答
19

如果要创建数组的单行表示,可以使用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 你甚至可以使用StringJoinerwith 会自动为你添加分隔符:

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()));
于 2013-03-25T15:49:02.063 回答
6

尝试Arrays.toString(Object[] a)

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

tableBornes上面的代码将在换行符中打印二维数组中的每个数组。

于 2013-03-25T15:37:56.100 回答
3

这个怎么样:

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

如果要在项目之间插入空格或其他字符,只需append在内部循环中添加另一个调用。

于 2013-03-25T15:43:09.630 回答