当前位置: 代码迷 >> J2SE >> 纠结,代码和书上的不对解决思路
  详细解决方案

纠结,代码和书上的不对解决思路

热度:132   发布时间:2016-04-24 01:19:11.0
纠结,代码和书上的不对
原题
你准备去海南旅游,现在要订购机票。机票的价格受季节旺季,淡季影响,而且头等舱和经济舱价格也不同。假设机票原价为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("数字输入错误,请确认输入的是月份!");//错误提示        }    }}
  相关解决方案