我有以下代码将文件读取到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的字符串类型来加倍时,我还有数组超出绑定的异常吗?
请提出任何建议
答案 0 :(得分:0)
在Java中,String
无法直接转换为double
。您需要的是Double.valueOf(someString)
或Double.parseDouble(someString)
。
编辑:
看起来即使您解决了这个问题,最终也会得到IndexOutOfBoundsException
。
如果您的列表大小为4,并且在某个时间点i == 1
和j == 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;
}