日期:2014-05-20  浏览次数:20768 次

纠结,代码和书上的不对
原题
你准备去海南旅游,现在要订购机票。机票的价格受季节旺季,淡季影响,而且头等舱和经济舱价格也不同。假设机票原价为5000元,4~10月为旺季,旺季头等舱九折,经济舱打八折,淡季头等舱打五折,经济舱打四折。编写程序,使用嵌套if选择结构,根据出行的月份和选择的舱位输出实际机票的价格。
如下:
请输入您出行的月份:1~12
5
请问你选择头等舱还是经济舱?头等舱请输入1,经济舱输入2
2
您的机票价格为:3000.0

我算出来的是4000,可书上是3000,怎么办啊,各位大牛看看是书错了,还是我错了呢。。谢谢了。。。

使用嵌套if结构写的代码:

Java code
/*
 * 使用if镶嵌结构
 * 使用mo保存月份
 * 使用air对飞机舱位进行划分
 * 使用if镶嵌结构对旺季时的头等舱及经济舱进行划分
 * 使用if多重结构,对淡季时头等舱及经济舱进行划分
 */
import java.util.Scanner;
public class P96_2{
    public static void main (String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入出行的月份:1~12");
        int mo = input.nextInt();//从键盘录入数字
        if ( mo <= 12 && mo >= 1 ){ //检测输入的月份是否正确
            System.out.println("请问你选择头等舱还是经济舱?头等舱请输入1,经济舱输入2");//若正确则提示下一项,否则结束
        } else {
            System.out.println("数字输入错误,请确认输入的是月份!");//错误提示
        } 
        double num = 5000 ;//定义机票原价为5000
        int air = input.nextInt(); //录入飞机舱位
        if (  mo >= 4 && mo <= 10  ){ //头等舱,旺季所享受的折扣,及输出提示
            if ( air == 1  ){//经济舱,旺季所享受的折扣,及输出提示
                num = num * 0.9 ;
                System.out.println("您的机票价格为1:\t"+num);
            } else if ( air == 2 ) {
            num = num * 0.8 ;
            System.out.println("您的机票价格为2:\t"+num);
        } }
        System.out.println("**********************************");
         if (  mo <=3 || mo > 10 && mo <= 12 ) {//头等舱,淡季所享受的折扣,及输出提示
             if ( air == 1 ) {
            num = num * 0.5 ;
            System.out.println("您的机票价格为3:\t"+num);
        } else if ( air == 2  )  {//经济舱,淡季所享受的折扣,及输出提示
            num = num * 0.4 ;
            System.out.println("您的机票价格为4:\t"+num);
    }
        else {
        }
        }
      }
}


使用if-switch选择结构写的代码:

Java code


/*
 * 使用switch选择结构
 * 使用mo保存月份
 * 使用air对飞机舱位进行划分
 * 使用switch进行分月,然后对全年的头等舱/经济舱进行划分
 */
import java.util.Scanner;
public class P96_52{
    public static void main (String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入出行的月份:1~12");
        int mo = input.nextInt();//从键盘录入数字
        System.out.println("请问你选择头等舱还是经济舱?头等舱请输入1,经济舱输入2");//若正确则提示下一项,否则结束
        int air = input.nextInt(); //录入飞机舱位
        double num = 5000 ;//定义机票原价为5000
        double airTop = num*0.5 ; //定义淡季时头等舱机票的价格
        double airTop1 = num*0.9;  //定义旺季时头等舱机票的价格
        double airTop2 = num*0.4; //定义淡季时经济舱机票的价格
        double airTop3 = num*0.8; //定义旺季时经济舱机票的价格
        if ( mo <= 12 && mo >= 1 && air == 1 ){//检测输入的月份是否正确,并且定义头等舱1~12月的机票价格
            switch (mo) {
            case 1 :
                System.out.println("您的机票价格为1:"+airTop);
                break;
            case 2 :
                System.out.println("您的机票价格为2:"+airTop);
                break;
            case 3 :
                System.out.println("您的机票价格为3:"+airTop);
                break;
            case 4 :
                System.out.println("您的机票价格为4:"+airTop1);
                break;
            case 5 :
                System.out.println("您的机票价格是5:"+airTop1);
                break;
            case 6 :
                System.out.println("您的机票价格是6:"+airTop1);
                break;
            case 7 :
                System.out.println("您的机票价格是7:"+airTop1);
                break;
            case 8 :
                System.out.println("您的机票价格是8:"+airTop1);
                break;
            case 9 :
                System.out.println("您的机票价格是9:"+airTop1);
                break;
            case 10 :
                System.out.println("您的机票价格是10:"+airTop1);
                break;
            case 11 :
                System.out.println("您的机票价格是11:"+airTop);
                break;
            case 12 :
                System.out.println("您的机票价格是12:"+airTop);
                break;
            }
        
        } else if ( mo <= 12 && mo >= 1 && air == 2 ) {
            switch (mo) {
            case 1 :
                System.out.println("您的机票价格为:"+airTop2);
                break;
            case 2 :
                System.out.println("您的机票价格为:"+airTop2);
                break;
            case 3 :
                System.out.println("您的机票价格为:"+airTop2);
                break;
            case 4 :
                System.out.println("您的机票价格为:"+airTop3);
                break;
            case 5 :
                System.out.println("您的机票价格是:"+airTop3);
                break;
            case 6 :
                System.out.println("您的机票价格是:"+airTop3);
                break;
            case 7 :
                System.out.println("您的机票价格是:"+airTop3);
                break;
            case 8 :
                System.out.println("您的机票价格是:"+airTop3);
                break;
            case 9 :
                System.out.println("您的机票价格是:"+airTop3);
                break;
            case 10 :
                System.out.println("您的机票价格是:"+airTop3);
                break;
            case 11 :
                System.out.println("您的机票价格是:"+airTop2);
                break;
            case 12 :
                System.out.println("您的机票价格是:"+airTop2);
                break;
            }
        } else {
            System.out.println("数字输入错误,请确认输入的是月份!");//错误提示
        }
    }
}