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
线程中的异常&#34; main&#34; java.lang.NumberFormatException:对于输入字符串:&#34; AEX2008kort.csv&#34; at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241) 在java.lang.Double.parseDouble(Double.java:540) 在CSVRead.main(CSVRead.java:26) Java结果:1
答案 0 :(得分:3)
更改为
Scanner sc = new Scanner(new File("kort.csv"));
你想要解析文件的内容,而不是字符串&#34; kort.csv&#34;
答案 1 :(得分:0)
完成Alex提到的操作后,您需要更改testStr的使用方式。在当前代码中,testStr将始终具有最后一行元素(517.38和516.91)。您可能想要做的是将双号存储在列表中
List<Double> mynumbers = new ArrayList<Double> ();
稍后使用它来填充您的2D数组。将行拆分为testStr后,应将这些数字添加到列表中,
mynumbers.add(testStr[0]);
mynumbers.add(testStr[1]);
最后,在parseDouble方法中,您应该传递列表:
,而不是传递testStrmynumbers.get(index_you_want);