0

我正在尝试用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
4

1 回答 1

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)会得到什么。您需要将整数转换为字符串,以便write()调用正确的方法。

第二种形式writer.write("" + number)有效,因为当您将数字添加到 String 时,Java 编译器会自动为您将数字转换为 String。这就是为什么writer.write(sepw + nmvector.get(i).nm);有效但writer.write(nmvector.get(i).nm);无效的原因。

于 2012-06-10T23:22:34.960 回答