所以这是我的文本文件:
CareFlight101 0 2
PiperCub 2 99
AirAmbulance 2 1
TransWorld122 2 5
Cessna152 3 99
Eastern429 4 10
他们被认为是我的到达时间和着陆优先权的飞机名称。
我正在尝试拆分它,以便将每个都考虑在内。我在拆分它时遇到了麻烦,因为它抛出了'java.lang.ArrayIndexOutOfBoundsException:1'错误 这就是我到目前为止所做的:
public class TheAircrafts {
public static ArrayList<Plane> planeList;
public static void main(String[] args){
try {
File f = new File("sample_data_p3.txt");
Scanner sc = new Scanner(f);
List<Plane> people = new ArrayList<Plane>();
while(sc.hasNextLine()){
String line = sc.nextLine();
String[] details = line.split("\\s+");
String flightID = details[0];
int arrivalTime = Integer.parseInt(details[1]);
int landingPriority = Integer.parseInt(details[2]);
Plane p = new Plane(flightID, arrivalTime, landingPriority);
planeList.add(p);
}
for(Plane p: planeList){
System.out.println(p.toString());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
在我的飞机课上我有:
public class Plane {
private String flightID;
private int arrivalTime;
private int landingPriority;
private int numRunways;
public Plane(String flightID, int arrivalTime, int landingPriority) {
this.setflightID(flightID);
this.arrivalTime = arrivalTime;
this.landingPriority = landingPriority;
}
然后获取并设置并获取每个变量的方法
答案 0 :(得分:0)
在这种情况下,如果有一行不超过空格分隔IndexOutOfBoundsException
个元素,则会得到i
。
在你的情况下,有一行只有一个单词。因此,当你试图获得不存在的第二个单词时,你会得到一个异常。
为避免这样做,您可以检查该行是否有3
字。
String []details = line.split("\\s+");
if(details.length == 3)
{
//do your setting
}