我正在尝试用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上调整其他类似的解决方案,但似乎我错过了一些至关重要的东西。
答案 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");
}