将ArrayList从文件读取转换为2D双数组

时间:2016-07-25 03:51:57

标签: java arrays file

我有以下代码将文件读取到Arraylist并将其转换为2D数组:

   public double [][] filetoArray(String fileName)
        throws IOException
    {

      ArrayList result = new ArrayList();

      File aFile = new File(fileName);

   BufferedReader reader = new BufferedReader(new FileReader(aFile));


    String aLine = null;

    while ((aLine = reader.readLine()) != null)
    {
         //result.add(aLine + ",");
         result.add(aLine);
        //aLine = reader.readLine();
    }

    String[][] data = new String[result.size()][result.size()];


   for(int i =0; i < result.size()/2; i++){
      for(int j =0; j <2; j++){
       data[i][j]= (String) result.get(j +( result.size() * i));
     }
  }

我有错误(filetoarray)无法将字符串转换为double?当我只使用带有out的字符串类型来加倍时,我还有数组超出绑定的异常吗?

请提出任何建议

2 个答案:

答案 0 :(得分:0)

在Java中,String无法直接转换为double。您需要的是Double.valueOf(someString)Double.parseDouble(someString)

编辑: 看起来即使您解决了这个问题,最终也会得到IndexOutOfBoundsException

如果您的列表大小为4,并且在某个时间点i == 1j == 1,您最终会得到。 1 + (4 * 1)即5。

答案 1 :(得分:0)

下面的代码片段会将arrayList转换为Double数组,用于文件中偶数行,其数据可以由类Double解析

public static double[][] filetoArray(String fileName) throws IOException {

    ArrayList<String> result = new ArrayList<String>();

    File aFile = new File(fileName);

    BufferedReader reader = new BufferedReader(new FileReader(aFile));

    String aLine = null;

    while ((aLine = reader.readLine()) != null) {
        result.add(aLine);
    }
    double[][] data = new double[result.size()/ 2][2];

    int init = 0;
    for (int i = 0; i < result.size() / 2; i++) {
        for (int j = 0; j < 2; j++) {
            data[i][j] = Double.parseDouble(result.get(init));
            init++;
        }
    }
    return data;
}