空数组将文件转换为数组

时间:2015-11-19 05:35:06

标签: java

我尝试将文件转换为整数数组,不知道我的错误在哪里,当我打印数组空数组时抛出

我离开我的方法,谢谢你

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

2 个答案:

答案 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之前重新打开文件阅读器,它将起作用。