从文本文件中读取一行并拆分其内容

时间:2015-11-17 05:39:08

标签: java

所以这是我的文本文件:

  

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; 
    }

然后获取并设置并获取每个变量的方法

1 个答案:

答案 0 :(得分:0)

在这种情况下,如果有一行不超过空格分隔IndexOutOfBoundsException个元素,则会得到i

在你的情况下,有一行只有一个单词。因此,当你试图获得不存在的第二个单词时,你会得到一个异常。

为避免这样做,您可以检查该行是否有3字。

String []details = line.split("\\s+");
if(details.length == 3)
{
 //do your setting
}