【问题标题】:Print List Java with format使用格式打印列表 Java
【发布时间】:2016-07-20 18:29:00
【问题描述】:

首先,我有这个输入:

[[0.0, 1.0, 0.6666666666666666, -0.3333333333333333, 0.0, 0.0, 1.3333333333333333], [1.0, 0.0, -0.3333333333333333, 0.6666666666666666, 0.0, 0.0, 3.3333333333333335], [0.0, 0.0, -1.0, 1.0, 1.0, 0.0, 3.0], [0.0, 0.0, -0.6666666666666666, 0.3333333333333333, 0.0, 1.0, 0.6666666666666667], [0.0, 0.0, -0.3333333333333333, -1.3333333333333333, 0.0, 0.0, -12.666666666666666]];

然后我想将此输入格式化输出。有一些规则:

  • 将[ 替换为"";
  • 将] 替换为"\n";
  • 将, 替换为""; // 删除元素之间的逗号
  • 将"." 替换为","; // 把点换成逗号
  • 在小数点后第二位截断; // 1.33333 -> 1.33

所以,这是我的代码:

@Override
public String toString() {
   StringBuilder sb = new StringBuilder("\n");

   sb.append("\n").append(numbersOfExmaple.toString()
           .replaceAll("\\[", "")
           .replaceAll("\\]", "\n")
           .replaceAll(",", "")
           .replaceAll("\\.", ","));
           // String.format isn't working...
    return sb.toString();
}

其实输出是(注意开头有空格,我也想去掉):

0,0 1,0 0,6666666666666666 -0,3333333333333333 0,0 0,0 1,3333333333333333
 1,0 0,0 -0,3333333333333333 0,6666666666666666 0,0 0,0 3,3333333333333335
 0,0 0,0 -1,0 1,0 1,0 0,0 3,0
 0,0 0,0 -0,6666666666666666 0,3333333333333333 0,0 1,0 0,6666666666666667
 0,0 0,0 -0,3333333333333333 -1,3333333333333333 0,0 0,0 -12,666666666666666

预期输出:

 0,00   1,00   0,67  -0,33   0,00   0,00   1,33 
 1,00   0,00  -0,33   0,67   0,00   0,00   3,33 
 0,00   0,00  -1,00   1,00   1,00   0,00   3,00 
 0,00   0,00  -0,67   0,33   0,00   1,00   0,67 
 0,00   0,00  -0,33  -1,33   0,00   0,00  -12,67

【问题讨论】:

    标签: java arraylist format


    【解决方案1】:

    试试这样的

    private static String matrixString(Double[][] numbersOfExmaple) {
        StringBuilder answ = new StringBuilder();
    
        for (Double[] arr : numbersOfExmaple) {
            for (Double val : arr) {
                answ.append(String.format("%7.2f", val).replace('.', ','));
            }
            answ.append('\n');
        }
    
        return answ.toString();
    }
    

    【讨论】:

      【解决方案2】:

      1 可以将字符串解析为数组 2 截断小数 3 在 print replace 之前打印您的数组元素 1 by 1 。作者,

      【讨论】:

        【解决方案3】:

        你可以使用这种方法

        for(ArrayList<Double> tmp:ad){
              for(Double t:tmp)
                    System.out.print(String.format("%.2f ",t).replace(".",","));
              System.out.println();
        }
        

        这里ad id arraylist 的arraylist add tmp 是ArrayList&lt;Double&gt;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-31
          • 1970-01-01
          • 2013-10-24
          • 2018-01-24
          • 2021-09-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多