Java编程简单的If / Else语句项目

时间:2014-02-08 18:32:37

标签: java if-statement

好的家伙所以我不得不尝试在java中编写一些代码,我无法获得代码来显示fullsize的定价选项。 我无法让程序继续使用我列为案例2的第二个选项。

该项目基本上让用户可以选择询问他是否租车[Y或N]

  • 如果Y输入了下一个问题

    • 它问“全尺寸紧凑型?”
      • 如果用户选择紧凑,则项目显示用户已选择紧凑和
      • 如果代码显示fullsize,则项目显示用户已选择fullsize。
  • 然后,如果用户为优惠券回答Y,则询问用户是否有优惠券,价格是30.50的7%。

    • 如果用户回答N,则价格为正常30.50。全尺寸正常价格是40.50,优惠券的价格是40.50的7%。以下是我目前编写的代码。

代码:

public class CarRental {
    public static void main(String[] args) {
        for (int i = 0; i < 4; i++) {

            System.out.println("Programmed by .");

            double standardCompact = 30.50;
            double couponCompact = ((30.50) - (30.50 * 0.07));
            double standardFullSize = 40.50;
            double couponFullSize = ((40.50) - (40.50 * 0.07));

            //Scanner Input
            Scanner input = new Scanner(System.in);
            System.out.print("Rent a Car? [Y or N]: ");

            //Response String
            String response = input.next().toUpperCase();

            if (response.equals("N")) {
                System.out.println("You entered no. Bye. ");
            } else if (response.equals("Y")) {
                System.out.print("Compact or Full-Size? [C or F]: ");

                //case1
                response = input.next().toUpperCase();
                if (response.equals("C")) {
                    System.out.println("You selected Compact. ");
                } else if (response.equals("F")) {
                    System.out.println("You have selected Full-Size. ");

                    System.out.print("Have coupon? [Y or N]: ");
                    response = input.next().toUpperCase();
                    if (response.equals("N")) {
                        System.out.println("Price is" + " " + standardCompact + " " + "per     day.");
                    } else if (response.equals("Y")) {
                        System.out.println("Price is" + " " + couponCompact + " " + "per day.");
                        //case 2
                        response = input.next().toUpperCase();
                        if (response.equals("F")) {
                            System.out.println("You have selected Full-Size.");
                            System.out.println("Have coupon? [Y or N]: ");
                            response = input.next().toUpperCase();
                            if (response.equals("N")) {
                                System.out.println("Price is" + " " + standardFullSize + " " + "per day.");
                            } else if (response.equals("Y")) {
                                System.out.println("Price is" + " " + couponFullSize + " " + "per day.");

                            }
                        }
                    }

3 个答案:

答案 0 :(得分:2)

您在}条款之后遗漏了一些else。例如:

        response = input.next().toUpperCase();
        if (response.equals("C")) {
            System.out.println("You selected Compact. ");
            //Put code that should only execute if you select Compact here.
        }else if(response.equals("F")){
            System.out.println("You have selected Full-Size. ");
            //Put code that should only execute if you select Full-size here.
        //Should have a } here!
        //Put code that should always execute here.

因为您从未关闭else子句中的代码块,所以后面的所有代码仍然是else的一部分,因此只有在else时才会执行被选中,而不是在你想要的任何情况下。

答案 1 :(得分:1)

您正在打开许多括号{,但不会在需要}的位置关闭它们。

我通常不只是处理代码,但我已经注意到你完成了这项工作的必要性,但在程序流程中关闭括号和一点点的地方很困惑。

我只是稍微改了一下,你可以削减和重用代码。

public static void main(String[] args){
    for(int i = 0; i < 4; i++) {

        System.out.println("Programmed by .");

        double standardCompact = 30.50;
        double couponCompact = ((30.50)-(30.50 * 0.07));
        double standardFullSize = 40.50;
        double couponFullSize = ((40.50)-(40.50 * 0.07));


        //Scanner Input
        Scanner input = new Scanner(System.in);
        System.out.print("Rent a Car? [Y or N]: ");

        //Response String
        String response = input.next().toUpperCase();

        if (response.equals("N")){
            System.out.println("You entered no. Bye. ");
        }
        else if (response.equals("Y")) {
            System.out.print("Compact or Full-Size? [C or F]: ");



            response = input.next().toUpperCase();
            if (response.equals("C")) {
                System.out.println("You selected Compact. ");

                //case1
                System.out.print("Have coupon? [Y or N]: ");
                response = input.next().toUpperCase();
                if (response.equals("N")) {
                    System.out.println("Price is" + " " + standardCompact + " " + "per     day.");
                }
                else if (response.equals("Y")) {
                    System.out.println("Price is" + " " + couponCompact + " " + "per day.");
                }

            }
            else if(response.equals("F")) {
                System.out.println("You have selected Full-Size. ");

                //case 2

                System.out.print("Have coupon? [Y or N]: ");
                response = input.next().toUpperCase();
                if (response.equals("N")) {
                    System.out.println("Price is" + " " + standardFullSize + " " +    "per day.");
                }
                else if (response.equals("Y")) {
                    System.out.println("Price is" + " " + couponFullSize + " " + "per day.");
                }
            }
        }
    }
}

答案 2 :(得分:0)

此代码存在的问题是您的所有代码都在全尺寸的if状态下,因此案例2仅在您选择全尺寸时执行,是优惠券,在显示最终消息后再次按F,代码应该看起来像这样。

  public class CarRental {
  public static void main(String[] args){
    for(int i=0; i<4; i++){

    System.out.println("Programmed by .");

    double standardCompact = 30.50;
    double couponCompact = ((30.50)-(30.50 * 0.07));
    double standardFullSize = 40.50;
    double couponFullSize = ((40.50)-(40.50 * 0.07));


 //Scanner Input
    Scanner input = new Scanner(System.in);
        System.out.print("Rent a Car? [Y or N]: ");

//Response String
    String response = input.next().toUpperCase();

    if (response.equals("N")){
        System.out.println("You entered no. Bye. ");
    }else if (response.equals("Y")) {
        System.out.print("Compact or Full-Size? [C or F]: ");

//case1

        response = input.next().toUpperCase();
        if (response.equals("C")) {
            System.out.println("You selected Compact. ");
            System.out.print("Have coupon? [Y or N]: ");
            response = input.next().toUpperCase();
            if (response.equals("N")) {
                System.out.println("Price is" + " " + standardCompact + " " + "per     day.");
            } else if (response.equals("Y")) {
                System.out.println("Price is" + " " + couponCompact + " " + "per day.");
           }
        //case 2
        }else if(response.equals("F")){
            System.out.println("You have selected Full-Size. ");
            System.out.println("Have coupon? [Y or N]: ");
            response = input.next().toUpperCase();
            if (response.equals("N")) {
                System.out.println("Price is" + " " + standardFullSize + " " +    "per day.");
            } else if (response.equals("Y")) {
                System.out.println("Price is" + " " + couponFullSize + " " + "per day.");
            }
        }
    }
}
}

正如您在上面的代码中所看到的,正确关闭条件块非常重要,因此代码确实能够按照您的预期执行。

使用流程图可以很好地支持学习编程语言的工作方式。