【问题标题】:Read CSV and convert string to double读取 CSV 并将字符串转换为双精度
【发布时间】:2017-01-10 13:40:07
【问题描述】:

我是 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]

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

【问题讨论】:

  • csv 文件中输入了什么?
  • Arrays.toString(nextLine) 很可能会导致无法解析为双精度的内容,因为即使只有一个元素,您也会得到您发布的字符串,即"[1]"。为什么不只是Double.parseDouble(nextLine[index])index 可能是0?
  • 感谢您的接受,很高兴我的回答对您有帮助

标签: java arrays csv opencsv


【解决方案1】:

事情是:

“[1]”

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

你的问题是你把 array 作为一个整体变成了 one 字符串。

所以不要打电话

Arrays.toString(nextLine).toString()

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

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

长话短说:您的代码可能想要解析“[1]”,但您应该让它解析“1”!

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2011-08-11
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    相关资源
    最近更新 更多