0

ArrayList最初の行と列のから整数値を取り出しfloat[][]、残りの から CSV にフォーマットするライターを Java で作成しようとしています。これを行うと、最初のコラムが奇妙になり、問題が見つかりません。何か提案や助けがあれば本当にうれしいです。これが私のコードです:

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()正しいメソッドが呼び出されるように、整数を文字列に変換する必要があります。

2 番目の形式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 に答える