所以我在 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/