我尝试将文件转换为整数数组,不知道我的错误在哪里,当我打印数组空数组时抛出
我离开我的方法,谢谢你
public int[] ConvertToArray(File xd) throws IOException {
String sCadena;int i=0;
int[]array;
FileReader fr = new FileReader(xd);
BufferedReader bf = new BufferedReader(fr);
int lNumeroLineas = 0;
while ((sCadena = bf.readLine())!=null) {
lNumeroLineas++;
}
array = new int[lNumeroLineas];
while ((sCadena = bf.readLine())!=null) {
lNumeroLineas++;
array[i]=Integer.parseInt(sCadena);
i++;
}
for (int j = 0; j < array.length; j++) {
System.out.println(array[i]);
}
return array;
}
答案 0 :(得分:1)
在第一个while
循环完成后,您已经在文件末尾。
因此,在第一次循环结束后再次从BufferedReader
对象bf
读取将始终为您提供null
(文件结束)并且第二次迭代将永远不会运行
同样在for loop
正在打印array[i]
但是for loop
正在迭代j variable
你可以借助ArrayList
:
public int[] ConvertToArray(File xd) throws IOException {
String sCadena;
ArrayList<Integer> array = new ArrayList();
FileReader fr = new FileReader(xd);
BufferedReader bf = new BufferedReader(fr);
int lNumeroLineas = 0;
while ((sCadena = bf.readLine())!=null) {
lNumeroLineas++;
array.add(Integer.parseInt(sCadena.trim())); //always recomended to trim(); to remove trailing whitespaces.
}
for (int j = 0; j < array.size(); j++) {
System.out.println(array.get(j));
}
return covertIntegers(array);
}
已修改:如果您想在不使用任何外部库的情况下发送int[]
而不是ArrayList<Integer>
。
public static int[] convertIntegers(List<Integer> integers)
{
int[] ret = new int[integers.size()];
for (int i=0; i < ret.length; i++)
{
ret[i] = integers.get(i).intValue();
}
return ret;
}
答案 1 :(得分:0)
您正在使用两个循环读取文件,但只打开一次。在第二个while
之前重新打开文件阅读器,它将起作用。