【发布时间】: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字符串末尾是否有换行符?也许尝试自己打印出来,或者只是ANA和NOM看看它是如何显示的。 -
很可能
ANA结尾有一个\r\n,特别是如果它来自Windows 机器。 -
@BinaryJudy 你是对的,这是我的 getANA 函数的问题。但是我该如何解决呢?它以字符串类型返回带 2 位小数的 double。
-
您从未听说过
.trim()方法? -
@JarrodRoberson 我找到了问题,谢谢。
标签: java string io formatting