将文件读入对象数组

时间:2014-07-15 22:19:52

标签: java arrays object file-io

所以我再次遇到Java问题。我不确定在Java中创建一个对象数组是否更难,或者我不习惯它,但据我所知它现在是正确的(如果没有,请告诉我)。因此,在完成所有这些摆弄后,我转移到了文件I / O. 所以这就是我目前遇到的问题。

public static void main(String[] args) {

    Coordinate[] locCoor = new Coordinate[100];
    Circle[] locCircles = new Circle[100];
    int track = 0;
    double X ,Y;

    Scanner scan;
    File file = new File("resource\\coordinates2.txt");

    try {
        scan = new Scanner(file);

        while(scan.hasNextLine()){
            String line = scan.nextLine();
            Scanner lineScanner = new Scanner(line);
            while(lineScanner.hasNextDouble()) {
                locCoor[track] = new Coordinate();
                X = lineScanner.nextDouble();
                if(lineScanner.hasNextDouble()) {
                    Y = lineScanner.nextDouble();
                    locCoor[track] = new Coordinate(X,Y);
                    track++;
                }
            }

            System.out.println(track);
        }
    }catch(FileNotFoundException e1) {
        e1.printStackTrace();
    }
}

我得到以下错误:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextDouble(Scanner.java:2413)
    **at implementation.main(implementation.java:133)**
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

Process finished with exit code 1

所以在我的代码中,我的代码和星号错误对应,但经过大量搜索后我似乎无法找到任何解决方案。如果有人能指出我正确的方向,我将非常感激。

OH,我忘了问是否应该在顶部或循环中声明对象数组(locCoor和locCircles)。我知道我的代码中都有。

1 个答案:

答案 0 :(得分:1)

您确定它有一个下一个元素,然后阅读两个

while(lineScanner.hasNext()) {
    X = scan.nextDouble();
    Y = scan.nextDouble();

考虑游标位于倒数第二个元素,它返回true,因为你有下一个元素并且你读取了最后一个元素,但是再次读取下一个语句中的元素会抛出这个错误