繁体   English   中英

程序解释方法之外的另一部分代码

[英]The program interprets the other part of the code outside the method

我有这种预订航班的方法:

public void reserveFlight(ArrayList<Flights> flights) {

    System.out.println("Upisite ID leta kako biste ga rezervisali!");

    int userChoice = scanner.nextInt();

    for (Flights flight : flights) {
        if (userChoice == flight.getFlightId())
            System.out.println("Rezervisali ste let za: " + flight.getTo()
                    + " od " + flight.getFrom() + ". Cena za biznis klasu je: " + flight.getBusinessClassPrice() + "$");
    }
    String yesNo = scanner.nextLine();

    System.out.println("Da li imate promo kod? (yes / no ): ");
    if (yesNo.contains("yes")) {
        System.out.println("Unesite vas promo kod: ");
        String promoCode = scanner.nextLine();
        for (Flights flight : flights) {
            if (promoCode.equals(flight.getPromoCode())) {
                System.out.println("Ostvarili ste popust od 10%");
            } else {
                System.out.println("Vas promo kod nije validan.");
            }
        }
    }
}

这在我的主要方法中:如果5号是那个方法

 while (true) {
        int choice = scanner.nextInt();
        switch (choice) {
            case 1:
                for (Passengers passengers : passengersArrayList) {//printing array elements one below the other
                    System.out.println(passengers);
                }
                break;
            case 2:
                for (Flights flights : flightsArrayList) { //printing array elements one below the other
                    System.out.println(flights);
                }
                break;
            case 3:
                passengersControllerImpl.addNewPassenger(passengersArrayList); //adding a new passenger
                break;
            case 4:
                flightsControllerImpl.addNewFlights(flightsArrayList); //adding a new flight
                break;
            case 5:
                System.out.println("--- Available flights ---");
                for (Flights flights : flightsArrayList) {
                    System.out.println(flights);
                }
                passengersControllerImpl.reserveFlight(flightsArrayList);
                break;
            case 6:
                showMenu(); //showing options to the user
                break;
            case 7:
                return; //program shutdown
            default:
                System.out.println("Invalid input!");

        }

    }

消息和变量不是英文的,但这并不重要。

当我运行程序时,它会抛出一个选项列表,没关系,我选择选项 5,它会显示一个航班列表,没关系,然后我选择我要预订的航班,它可以工作,现在程序问我如果我有促销代码,如果我有一个字母是 如果我没有,我有一个字母没有:

System.out.println("Da li imate promo kod? (yes / no ): ");
    if (yesNo.contains("yes")) {
        System.out.println("Unesite vas promo kod: ");
        String promoCode = scanner.nextLine();
        for (Flights flight : flights) {
            if (promoCode.equals(flight.getPromoCode())) {
                System.out.println("Ostvarili ste popust od 10%");
            } else {
                System.out.println("Vas promo kod nije validan.");
            }
        }
    }

在我输入 no 或 yes 后,没关系,程序给我这个错误:

Exception in thread "main" java.util.InputMismatchException

并将我发送到这行代码:

int choice = scanner.nextInt();

这意味着我在我的 switch case 中输入了错误的条目,因为他需要数字。

为什么我的程序在向我询问促销代码后不能继续使用该方法和这段代码?

System.out.println("Da li imate promo kod? (yes / no ): ");
    if (yesNo.contains("yes")) {
        System.out.println("Unesite vas promo kod: ");
        String promoCode = scanner.nextLine();
        for (Flights flight : flights) {
            if (promoCode.equals(flight.getPromoCode())) {
                System.out.println("Ostvarili ste popust od 10%");
            } else {
                System.out.println("Vas promo kod nije validan.");
            }
        }
    }

现在我也删除了这部分代码:

System.out.println("Da li imate promo kod? (yes / no ): ");
    if (yesNo.contains("yes")) {
        System.out.println("Unesite vas promo kod: ");
        String promoCode = scanner.nextLine();
        for (Flights flight : flights) {
            if (promoCode.equals(flight.getPromoCode())) {
                System.out.println("Ostvarili ste popust od 10%");
            } else {
                System.out.println("Vas promo kod nije validan.");
            }
        }

也就是说,当我运行程序并添加它只是为了调试时不起作用的代码:

String yesNo = scanner.nextLine();

if(yesNo.contains("s")){
        System.out.println("aaa");
    }else{
        System.out.println("eee");
    }

程序立即打印出我“eee”。 它没有给我输入单词的选项,即使它在要输入的代码中

另外,当我评论代码的第一部分时,这是:

/*  System.out.println("Upisite ID leta kako biste ga rezervisali!");

    int userChoice = scanner.nextInt();

    for (Flights flight : flights) {
        if (userChoice == flight.getFlightId())
            System.out.println("Rezervisali ste let za: " + flight.getTo()
                    + " od " + flight.getFrom() + ". Cena za biznis klasu je: " + flight.getBusinessClassPrice() + "$");
    }*/

第二部分工作正常,所以现在真的很想

好吧,我还注意到一件事,

在这部分代码上:

 for (Flights flight : flights) {
        if (userChoice == flight.getFlightId())
            System.out.println("Rezervisali ste let za: " + flight.getTo()
                    + " od " + flight.getFrom() + ". Cena za biznis klasu je: " + flight.getBusinessClassPrice() + "$");
    } //If a delete this curly brace, second part of code works, just print each souts four time because I have 4 flights and etc.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM