Java编写器第一个字符(int)输出错误

时间:2012-06-10 23:18:31

标签: java int character writer

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

1 个答案:

答案 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);没有。