2016-07-25 121 views
0

我的代码波纹管,其读取文件到ArrayList和其转换为2D阵列:从文件转换一个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)不能投射字符串双重?我也有数组超出界限的异常,只是使用字符串类型与外部铸造加倍?

任何建议,请

+0

删除被解析“”从结果 –

+0

@ Vaibhav Bajaj我从列表中删除了“,”,我仍然有错误? – novin

+0

你可以发布'stacktrace' – emotionlessbananas

回答

0

在Java中,String不能直接强制转换为double。你需要的是Double.valueOf(someString)Double.parseDouble(someString)

编辑: 看起来即使你解决了这个问题,你也会以IndexOutOfBoundsException结束。

如果你的清单大小是4,并在某个点i == 1j == 1,你会最终。 1 + (4 * 1)这是5.

0

下面的代码片断将ArrayList中转换为双阵列,用于偶数在文件中的数据线,可以由类双

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; 
}