【发布时间】:2014-09-13 14:21:05
【问题描述】:
CSV 文件:
515.30,516.81
516.81,514.27
516.74,517.68
517.54,516.72
517.61,517.64
517.22,516.99
517.21,517.33
516.99,516.92
516.96,517.5
517.38,516.91
中间没有空行。
到目前为止我的程序:
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
public class CSVRead
{
public static void main(String arg[]) throws Exception
{
double[][] test = new double[9][2];
String[] testStr = new String[19];
String delimiter = ",";
Scanner sc = new Scanner("kort.csv");
while (sc.hasNextLine())
{
String line = sc.nextLine();
testStr = line.split(delimiter);
}
for (int i=0; i<10; i++)
{
for (int j=0; j<2; j++)
{
test[i][j] = Double.parseDouble(testStr[2*i+j]);
}
}
for (int y=0; y<10; y++)
{
for (int x=0; x<2; x++)
{
System.out.print(test[y][x] +" ");
}
}
} //main()
} // CSVRead
线程“main”java.lang.NumberFormatException 中的异常:对于输入字符串:“AEX2008kort.csv” 在 sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241) 在 java.lang.Double.parseDouble(Double.java:540) 在 CSVRead.main(CSVRead.java:26) Java 结果:1
【问题讨论】:
-
while (sc.hasNextLine())似乎毫无意义...如果文本文件中有多行,无论如何你都会用最后一行覆盖testStr。 -
你想在这里做什么?只读取特定数量的 csv 条目?读取所有 csv 条目并仅保存最新的?
-
您检查过
testStr[2*i+j]返回的内容吗?似乎它包含kort.csv,显然其中没有要解析的双精度值。