java - 将文件读入对象数组

标签 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

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

哦,我忘了问我是否应该在顶部或循环中声明对象数组(locCoor 和 locCircles)。我知道我的代码中同时包含了这两个内容。

最佳答案

您要确保它有一个下一个元素并阅读下一个两个

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

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

关于java - 将文件读入对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24769135/

相关文章:

c - c中3d数组的总和值

c++ - 我继承了一个使用私有(private)的构造函数,为什么我仍然可以从主函数访问它?

java - 如何手动退出 while 循环 (java)

java - 如何使用对象类型作为方法/构造函数的参数?

java - NetBeans 没有 Java 选项

c++ - 在类函数中访问 vector 的元素

javascript - 闭包在 javascript 中返回什么?

java - Eclipse 无法加载 SWT 库

c# - 为什么不允许 Array.Count 作为自己的索引值?

C:按指针键对指针结构数组进行排序