首页 > 解决方案 > JAVA连接双数组=>字符串(特殊格式)

问题描述

如何格式化字符串以将双精度数组转换为形式:[0.0, 2.4, 5.5, 6.3]

我将双数组元素分配给一个字符串以具有上述格式的字符串表示形式。

我将双数组更改为单个字符串表示的代码:

public String toString() {
    String toString="[";
     for(int i=0; i<data.length; i++) {
         toString = toString + data[i] + ", ";
      }
    return toString + "]";
}

我得到格式为 [0.0, 2.4, 5.5, 6.3, ] 的数组,这不是预期的,也是错误的。

如何将其格式化为 [0.0, 2.4, 5.5, 6.3]?

我尝试过使用Arrays.toString()方法,但是我不允许在这个项目中使用它。

我应该如何更改我的代码以获得所需的格式?

标签: javaarraysstringfor-loopconcatenation

解决方案


您可以流式传输data阵列并让Collectors.joining繁重的工作:

@Override
public String toString() {
    return Arrays.stream(data)
                 .mapToObj(Double::toString).collect(Collectors.joining(", ", "[", "]"));
}

编辑:
如果你不能流式传输数组,你可以自己迭代它并对第一个元素进行特殊处理,这是唯一一个前面没有逗号的元素:

@Override
public String toString() {
    StringBuilder sb = new StringBuilder("[");
    if (data.length > 0) {
        sb.append(data[0]);
    }
    for (int i = 1; i < data.length; ++i) {
        sb.append(", ").append(data[i]);
    }
    sb.append("]");
    return sb.toString();
}

推荐阅读