读取CSV并将字符串转换为double

时间:2017-01-10 13:40:08

标签: java arrays csv opencsv

我是Java新手,我正在使用开放式CSV读取csv文件,我的代码如下:

import java.io.FileReader;
import java.util.Arrays;

import au.com.bytecode.opencsv.CSVReader;

public class ParseCSVLineByLine
{
   double arr []=new arr[10];
   public static void main(String[] args) throws Exception
   {
      //Build reader instance
      //Read data.csv
      //Default seperator is comma
      //Default quote character is double quote
      //Start reading from line number 2 (line numbers start from zero)
      CSVReader reader = new CSVReader(new FileReader("data.csv"), ',' , '"' , 1);

      //Read CSV line by line and use the string array as you want
      String[] nextLine;
      int i=0;
      while ((nextLine = reader.readNext()) != null) {
         if (nextLine != null && i<10) {
            //Verifying the read data here
            arr[i]=Double.parseDouble(Arrays.toString(nextLine).toString());
            System.out.println(arr[i]);
         }
        i++;
       }
   }
}

但是这不起作用。但是当我只打印

Arrays.toString(nextLine).toString()

打印

[1]
[2]
[3]
.
.
.
.
[10]

我认为转换存在问题。感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

事情是:

&#34; [1]&#34;

不是可以解析为数字的字符串!

您的问题是您将数组整体转换为一个字符串。

所以不要打电话

Arrays.toString(nextLine).toString()

迭代 nextLine并将每个数组成员分配给parseDouble()!

此外:我很确定你会收到 NumberFormatException 或类似的东西。 JVM已经告诉您正在尝试将无效字符串转换为数字。您必须学会阅读这些例外消息,并理解他们的意思!

长话短说:您的代码可能想要解析&#34; [1]&#34;,但您应该解析&#34; 1&#34;代替!