如何让我的扫描仪跳过“ADD_Airport”字符串?

时间:2021-03-11 10:56:19

标签: java file

我正在从文件中读取这些信息,需要将信息存储在数组中以将它们打印到另一个文件中。一个是三个字母的代码,一个是城市名称,一个是末尾的字母。我遇到的问题是,当我想阅读它们时,扫描仪会在第二行和第三行中添加“ADD_Airport”字符串。在主方法中,我有它,以便 if(command.equals("ADD_Airport"), 它会激活该方法。第一行按我的意愿工作,但其余部分没有。谢谢

p.s 有谁知道我可以在哪里练习或找到与此接近的例子?谢谢。

这是输入文件

6 9

ADD_Airline SV 沙特航空 SA saudia.com

ADD-_Airline EK Emirates UE emirates.com

ADD_Airline NS NasAir SA flynas.com

ADD_Airline BA BritishAirways UK britishairways.com

ADD_Airline KL Holland NL klm.com

ADD_Airline GF GulfAir BH gulfair.com

ADD_Airport JED Jeddah KAIA

ADD_Airport MED Madina PMIA

ADD_Airport DXB 迪拜 DIA

ADD_Airport BAH 巴林 BIA

ADD_Airport CAI 开罗 CIA

ADD_Airport LHR 伦敦 HAL

ADD_Airport AMS 阿姆斯特丹 AAS

ADD_Airport KRT Khartoum KIA

ADD_Airport CGK Jakarta SIA

//我的代码

public static void main(String[] args) throws FileNotFoundException {

    // input files
    File inputD = new File("inputDB.txt");

    File inputB = new File("inputBookings.txt");

    Scanner sc = new Scanner(inputD);
    // print writer
    PrintWriter out = new PrintWriter("printLog.txt");

    // inputDB arrays
    // airline info
    String[] airlines = new String[sc.nextInt()];
    String[] codes = new String[airlines.length];
    String[] country = new String[airlines.length];
    String[] website = new String[airlines.length];

    // airport info
    String[] airports = new String[sc.nextInt()];
    String[] threeLetter = new String[airports.length];
    String[] city = new String[airports.length];

    String[] flights = new String[sc.nextInt()];

    String command = null;

    out.println("--------------- Air Ticket Reservation System Log ---------------\n");
    do {
        command = sc.next();
        if (command.equalsIgnoreCase("ADD_airline")) {
            add_airline(airlines, sc, out, codes, country, website)
public static void add_airline(String[] airlines, Scanner sc, PrintWriter out, String[] codes, String[] country,
        String[] website) {

    for (int i = 0; i < airlines.length; i++) {

        

        codes[i] = sc.next();
        airlines[i] = sc.next();
        country[i] = sc.next();
        website[i] = sc.next();

        out.println("(New Airline Added) " + "Airline No.: " + codes[i] + " Airline: " + airlines[i] + " Hub: "
                + country[i] + " URL: " + website[i]);
        out.println("-------------------\n");
        
    }

}

它应该是这样的:

(添加新航空公司)航空公司编号:SV 航空公司:沙特航空枢纽:SA URL:saudia.com

(添加新航空公司)航空公司编号:EK 航空公司:Emirates Hub:UE URL:emirates.com

(添加新航空公司)航空公司编号:NS 航空公司:NasAir Hub:SA URL:flynas.com

(添加新航空公司)航空公司编号:BA 航空公司:BritishAirways Hub:英国 URL:britishairways.com

(添加新航空公司)航空公司编号:KL 航空公司:Holland Hub:NL URL:klm.com

(添加新航空公司)航空公司编号:GF 航空公司:GulfAir 枢纽:BH 网址:gulfair.com

1 个答案:

答案 0 :(得分:1)

我相信你的代码应该是这样的:

for each line from inputFile:
   split (by ' ') that line into array of parts
   if part 0 == 'ADD_Airline' then
      call `addAirline` method and pass parts 1,2,3,4 to it as parameters
   else if part 0 == 'ADD_Airport' then
      call `addAirport` method and pass parts 1,2,3 to it as parameters