如何在Java中将数组写入.csv?

时间:2015-09-20 20:47:08

标签: java csv

我正在尝试用Java编写一段生成数据数组的代码,我想将这些数据写入一个CSV列中的CSV文件中。但是,我正在努力获得正确的输出。我的程序在数组中生成总体

  

double [] wasp = new double [1000];

由几个函数之一填充,例如:

for (int i = 0; i < wasp.length; i++) {
                double mu = -10 + Math.random()*20;
                double sigma = 0 + Math.random()*10;
                wasp[i] = nextGaussian(mu, sigma);
                description = "Normal";
                Param1 = Double.toString(mu);
                Param2 = Double.toString(sigma);
            }

我使用以下代码尝试将数组写入CSV:

    FileWriter writer = new FileWriter("C:\\Users\\Havok\\Google Drive\\Skripsie\\R\\JavaOut.csv");

    for (int j = 0; j < wasp.length; j++) {
        writer.append((char) wasp[j]);
    writer.append(",");
    }
    writer.toString();    
    writer.flush();
    writer.close();

但是,当我打开CSV文件时,它看起来“已损坏”,就像字符没有正确编码一样。该数据还填充了文件中的多个列。

我期望的输出是一个CSV文件,其中包含一列实际值;例如,

  

1.467354

     

0.812738

     

3.595733

等等。但是,我得到的是一个充满以下内容的专栏:

  

,,,,,,￶,,,,,,,￯,ï¿¿,,￾,,,,ï¿¿,,, ,,ï¿·,,￲,￲,,ï¿·,,,,,,ï¿·,,￸,ï¿μ,,,, ,,ï¿,,,ï¿°,￸,,ï¿»,,￾,,,,ï¿¿,,￾,,￯,, ,,ï¿μ,,ï¿»,,↓,,ï¿·,￸,,,,ï¿

我做错了什么?我查看了Java主页上的教程并尝试在StackOverflow上调整其他类似的解决方案,但似乎我错过了一些至关重要的东西。

2 个答案:

答案 0 :(得分:2)

只需使用String.valueOf(double d)方法将双精度转换为字符串。

FileWriter writer = new FileWriter("C:\\Users\\Havok\\Google Drive\\Skripsie\\R\\JavaOut.csv");

for (int j = 0; j < wasp.length; j++) {
    writer.append(String.valueOf(wasp[j]));
    writer.append("\n");
}
writer.close();

或者,您可以根据需要使用String.format()格式化双精度格式。

答案 1 :(得分:1)

在CSV格式中,每组数据由新行(\ n)分隔,每列用逗号分隔。因此,如果您需要单列数据,则代码应如下所示。

for (int j = 0; j < wasp.length; j++) {
    writer.append((char) wasp[j]);
writer.append("\n");
}