将二维数组转换为字符串

26

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

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

这是它的输出结果:

[[Ljava.lang.String;@19b8858

我该怎么获得更易读的内容?


4
你正在获取数组的引用。你需要遍历其中的所有元素并将它们连接起来以获得你想要的输出。 - Luiggi Mendoza
4个回答

32

尝试一行代码版本

Arrays.deepToString(tableBornes);

或者多行版本

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

谢谢,我尝试过了,但我也想将其返回到一行中,以便在一行中打印每个列表。怎么做呢? - Asma.O

21

如果你想创建数组的单行表示,可以使用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()));

6

尝试使用 Arrays.toString(Object[] a) 方法。

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

上述代码将在新行中打印二维数组tableBornes中的每个数组。

3
这个怎么样:
StringBuilder sb = new StringBuilder();
for(String[] s1 : tableBornes){
    for(String s2 : s1){
        sb.append(s2);
    }
}
String table = sb.toString();

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

是的,我想要添加空格并且换行,以便得到表格的模型。我在想是否有一种直接打印表格的方法,因为我已经有了模型。 - Asma.O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接