【问题标题】:java formatter output incorrect [closed]java格式化程序输出不正确[关闭]
【发布时间】:2015-03-24 18:08:20
【问题描述】:
try {
                FileWriter writer = new FileWriter("metrics.csv");
                Formatter fmt = new Formatter();
                fmt.format(
                        "%10s%10s%10s%10s%10s%10s%10s%10s%10s%10s%10s%3s", "",
                        "ANA", "NOM", "NOA", "ITC", "ETC", "CAC", "DIT",
                        "CLD", "NOC", "NOD", ",\n");
                for(int i = 0;i< class_list.getModel().getSize(); i++){
                    fmt.format(
                            "%10s%10s%10s%10s%10s%10s%10s%10s%10s%10s%10s%3s", declaration.getClassesName().get(i),
                            declaration.getANA(i), declaration.getNOM(i), declaration.getNOA(i), declaration.getITC(i), declaration.getETC(i), declaration.getCAC(i), declaration.getDIT(i),
                            declaration.getCLD(i), declaration.getNOC(i), declaration.getNOD(i), ",\n");
                }
                writer.append(fmt.toString());
                writer.flush();
                writer.close();
                System.out.println("done");
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }

所有 get 函数都返回一个长度小于 10 的字符串。 我得到的输出是:

             ANA       NOM       NOA       ITC       ETC       CAC       DIT       CLD       NOC       NOD ,
Equipe     0.33
     3         1         1         1         3         0         0         0         0 , 
Participant      0.0
     1         1         0         0         0         0         1         2         2 ,
Joueur     0.33
     3         3         0         1         1         1         0         0         0 , 
Entraineur      0.0
     1         2         0         0         1         1         0         0         0 ,
Stade      2.0
     1         2         1         0         1         0         0         0         0 ,

如您所见,该列未对齐。任何人都知道我的代码中的问题在哪里? 谢谢。


编辑 1: 这是我的 getANA 函数。

 public String getANA(){
    if (operations.size()==0) return "0";
    int arg_sum = 0;
    for(Operation o : operations){
        arg_sum+=o.getArgumentNumber();
    }
    return String.format("%.2g%n", (double)arg_sum/operations.size());
}

【问题讨论】:

  • ANA 字符串末尾是否有换行符?也许尝试自己打印出来,或者只是 ANANOM 看看它是如何显示的。
  • 很可能ANA 结尾有一个\r\n,特别是如果它来自Windows 机器。
  • @BinaryJudy 你是对的,这是我的 getANA 函数的问题。但是我该如何解决呢?它以字符串类型返回带 2 位小数的 double。
  • 您从未听说过.trim() 方法?
  • @JarrodRoberson 我找到了问题,谢谢。

标签: java string io formatting


【解决方案1】:

尝试在您的getANA() 方法中取出%n

return String.format("%.2g", (double)arg_sum/operations.size());

【讨论】:

  • 它有效,谢谢。
猜你喜欢
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多