【发布时间】:2021-11-09 06:25:09
【问题描述】:
我正在执行一项任务,我必须读取一个 .txt 文件,其中包含美国各州/地区及其人口的名称,并将各州分配给一个 ArrayList 并将人口分配给另一个(并行)。 .txt文件格式如下
state name,123456
state name,123456
所以名称和整数信息之间的分隔是“,”字符。 我编写了以下方法来读取文件:
public static void readFile(ArrayList<String>states, ArrayList<Integer> pops){
try{
Scanner read = new Scanner(new File("StatesPop.txt"));
while(read.hasNext()){ //while there is still content to read
if(read.hasNextInt()){ //if the next info is an int
pops.add(read.nextInt()); //read it and add it to the pop list
if(read.hasNextLine()){ //if there is a next line
read.nextLine(); //moves to the beginning of the next line
}
}
else{ //if it's not an int, it's a char
read.useDelimiter(","); //read until hitting a comma
String name = read.next();
states.add(name); //add to the states names list
}
}
read.close();
}
catch(FileNotFoundException fnf){
System.out.println("File was not found.");
}
}
我得到的报错方法如下:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:459)
at Main.sortStates(Main.java:75)
at Main.menu(Main.java:174)
at Main.main(Main.java:15)
【问题讨论】:
-
您的错误似乎发生在
at Main.sortStates(Main.java:75),不确定readFile与它有什么关系。当我测试你提供的代码时,它似乎读得很好 -
@Nimtheria 我想,你的
readfile代码没有产生预期的结果。所以你的Main.sortStates抛出了一个错误。