Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,处理CSV文件,访问单个列?_Java_Arrays_Csv - Fatal编程技术网

Java,处理CSV文件,访问单个列?

Java,处理CSV文件,访问单个列?,java,arrays,csv,Java,Arrays,Csv,所以,我有一个csv文件,类似这样 Id | Stamp | Date | Value 1 | Value 2 | Value 3 01 | 14E+ | 2011/05 | 333 | 312 | 457 02 | 15T+ | 2011/05 | 432 | 345 | 354 等等。 因此,我编写了一个程序,使用JFileChooser打开这个csv文件,将其存储到文件中,读取并显示到文本区域。如果我能修复这个程序,我想做的就是基本上去掉ID戳和

所以,我有一个csv文件,类似这样

Id | Stamp | Date    | Value 1 | Value 2 | Value 3
01 | 14E+  | 2011/05 | 333     | 312     | 457
02 | 15T+  | 2011/05 | 432     | 345     | 354
等等。 因此,我编写了一个程序,使用JFileChooser打开这个csv文件,将其存储到文件中,读取并显示到文本区域。如果我能修复这个程序,我想做的就是基本上去掉ID戳和日期栏,然后将数据解析成双倍,这样我就可以从值1、值2和值3中找到平均值。有人能帮我理解怎么做吗?我一点也不了解CSV领域的运作情况

节目

csv文件


使用Integer.parseInt/Double.parseDouble将拆分后的值转换为int值,并使用DateFormat将平均值和日期值解析为日期。向Satheesh Cheveri道歉,我正在删除他建议中的一些错误

String cols[] = line.split("\\|"); // since the argument to split is a regex and | is a special character, it must be quoted.
double v1 = Double.parseDouble(cols[3]);
double v2 = Double.parseDouble(cols[4]);
double v3 = Double.parseDouble(cols[5]);
handleValuesFromLine(v1, v2, v3);  // accumulate stuff for averaging later
我还建议您使用提取方法来创建

loadDataFromFile(BufferedReader in)

方法。这样,您就可以编写第二个应用程序来测试您的文件解析逻辑,而无需运行GUI,只需单击5项即可测试代码更改。

如果您不能将文件的每一行读取为字符串,请使用String.split |将字符串拆分为所有元素的数组,然后计算您感兴趣的元素的平均值?请不要像对内容那样在循环中附加字符串。改用StringBuilder。此外,由于您在与UI线程相同的线程上执行的处理量,UI会冻结。它会挂起,当您解析大型CSV时,UI无法自我更新。我想将数据拆分,然后对我感兴趣的每个元素进行计算,这是我不知道如何做的。我想计算三个值列的平均值,但不知道如何计算这些值并使其他列无效。另外,我不认识StringBuilder。我得查一下。谢谢。Brillant,我刚刚做了这个,然后将v1打印到控制台,并对照我的CSV文件进行检查,结果非常准确。可以用这个来做我需要做的事情,非常感谢!
String cols[] = line.split("\\|"); // since the argument to split is a regex and | is a special character, it must be quoted.
double v1 = Double.parseDouble(cols[3]);
double v2 = Double.parseDouble(cols[4]);
double v3 = Double.parseDouble(cols[5]);
handleValuesFromLine(v1, v2, v3);  // accumulate stuff for averaging later
loadDataFromFile(BufferedReader in)