Java - 如何使用Scanner将文本文件的值存储到数组中?

时间:2016-03-15 22:59:49

标签: java

import java.io.*;

import java.util.*;

import java.text.*;

public class textFile {

    public static void main(String args[]) throws IOException {

        Scanner sf = new Scanner(new File("C:\\temp_Name\\DataGym.in.txt"));
        int maxIndx = -1;
        String text[] = new String[1000];
        while (sf.hasNext()) {
            maxIndx++;
            text[maxIndx] = sf.nextLine();
        }

        sf.close();

        double average[] = new double[100];

        for (int j = 0; j <= maxIndx; j++) {
            Scanner sc = new Scanner(text[j]);
            int k = 0;
            while (k <= 10) { //attempt to store all the values of text file (DataGym.in.txt) into the array average[] using Scanner
                average[k] = sc.nextDouble();
                k++;
            }
        }
    }
}

我的代码没有工作,并且在我将sc.nextDouble()存储到数组的k元素的地方继续给我这个错误:

  

java.util.NoSuchElementException:

     

null(在java.util.Scanner中)

1 个答案:

答案 0 :(得分:1)

您应该查看Scanner API。如果您拨打Scanner.hasNext()并拨打Scanner.nextLine()以下电话,则表示怀疑。有免费电话可以查看,然后从Scanner获取。例如,如果你真的想要下一行,那么你应该在调用Scanner.hasNextLine()之前检查Scanner.nextLine()是否正确。同样,您可以通过调用Scanner.nextDouble()来呼叫Scanner.hasNextDouble(),而无需先前调用sf.close

还有一些评论提到你应该使用调试器或打印语句,看看你是否得到了你应该得到的东西。这样的步骤是调试所必需的。

例如在System.out.println(Arrays.toString(text))之后,您可以使用active并判断数组是否包含您期望的内容。

希望这有助于您的调试。