2015-11-19 58 views
0

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

我离开我的方法,谢谢你

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

回答

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

根据什么?你想从上述方法返回一个整数数组吗? –

+0

非常感谢你解决问题 –

+0

很高兴帮助!如果问题解决了,请接受答案,因为它可以帮助将来访问此问题的所有人。 –

0

您正在读取带有两个循环的文件,但只打开一次。在第二个while之前重新打开文件阅读器,它将起作用。

+0

@Zbynek非常感谢您的贡献 –