【发布时间】:2019-10-25 18:28:50
【问题描述】:
我的任务是制作一张大西洋上空的飓风表,以及它们的风速、压力等,我正在对其进行测试以确保 inFile 中的扫描仪正在工作,但一直出错
我尝试过抛出异常,抛出 NoSuchElementException,将整数更改为字符串(不知道为什么我认为这会起作用)
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
File data = new File("C:\\Users\\zenno\\OneDrive\\Documents\\School\\Hurricane Data\\hurcdata2.txt");
Scanner inFile = new Scanner (data);
int length = 0;
while (inFile.hasNextLine()){
length++;
inFile.nextLine();
}
int[] year = new int[length];
String[] month = new String[length];
int[] pressure = new int[length];
int[] speed = new int[length];
String[] name = new String[length];
for(int n = 0; n <= length; n++){
year[n] = inFile.nextInt();
month[n] = inFile.next();
pressure[n] = inFile.nextInt();
speed[n] = inFile.nextInt();
name[n] = inFile.next();
System.out.println(year[n] + " " + month[n] + " " + pressure[n] + " " + speed[n] + " " + name[n]);
}
}
}
它应该打印出 int 和字符串,但我得到了这个错误
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Main.main(Main.java:25)
第 25 行是:
year[n] = inFile.nextInt();
任何关于我的错误的帮助将不胜感激
【问题讨论】:
-
你认为你的
while循环有什么作用?对inFileScanner有什么影响,它之后的状态是什么? -
我没想到。为同一文件添加第二个扫描仪是修复它的好方法,还是有更好的方法?
-
解决方案取决于您想要实现的目标,这里不清楚。通常我们不需要对文件进行两次迭代。如果我们想存储它的数据,我们正在使用像 List 这样的可调整大小的结构。或者我们可以即时处理文件中的所有数据(就像您在第二个循环中所做的那样,但不是从数组中获取数据,而是直接从扫描仪打印它们。而且您有许多相同大小的数组。通常如果我们有
String[] names, String[] addresses, int[] ages这意味着我们可能应该有一个像class Person{ String name; String address; int age;}和Person[] people这样的类。 -
或者根本不使用数组,列表通常更有用。
标签: java java.util.scanner nosuchelementexception