我正在尝试用Java编写一个编写器,它从ArrayList
中获取第一行和第一列的整数值,并为其余部分获取float[][]
并将其格式化为CSV。这样做我的第一列变得奇怪,我找不到问题。我会很高兴任何建议或帮助。这是我的代码:
public static void resulttofile(List<Nm_item> nmvector,
float[][] cor_matrix, String filename) {
try {
FileWriter writer = new FileWriter(new File(filename + ".csv"));
for (int i = nmvector.get(0).row; i <= nmvector
.get(nmvector.size() - 1).row; i++) {
writer.write(sepw + nmvector.get(i).nm);
}
writer.write(System.getProperty("line.separator"));
for (int i = nmvector.get(0).row; i <= nmvector
.get(nmvector.size() - 1).row; i++) {
writer.write(nmvector.get(i).nm);
for (int j = nmvector.get(0).row; j <= nmvector.get(nmvector
.size() - 1).row; j++) {
writer.write(sepw + cor_matrix[i][j]);
}
writer.write(System.getProperty("line.separator"));
}
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Results saved to " + filename + ".csv");
}
和输出(裁剪):
350 351 352 353
? 0 0.003 0.171 0.001
? 0.003 0 0.274 0
è 0.163 0.271 0 0.345
Ü 0 0 0.35 0
? 0.008 0.019 0.326 0.044
? 0.008 0.016 0.199 0.015
? 0.015 0.037 0.361 0.04
? 0.029 0.023 0.171 0.023
? 0.038 0.042 0.186 0.038
答案 0 :(得分:1)
尝试:
writer.write(Integer.toString(nmvector.get(i).nm));
或者,正如OldCurmudgeon所说:
writer.write("" + nmvector.get(i).nm);
关键是FileWriter包含多个write
方法。有write(int)和write(String)。第一个不写数字,它会写出与给定数字相对应的字符,所以例如writer.write(88)
将输出字符'X',writer.write(89)
将输出'Y',然后你可以猜出writer.write(90)
会给你什么。您需要将整数转换为String,以便调用正确的write()
方法。
第二种形式writer.write("" + number)
有效,因为当您向String添加数字时,Java编译器会自动将数字转换为String。这就是为什么writer.write(sepw + nmvector.get(i).nm);
有效,但writer.write(nmvector.get(i).nm);
没有。