原题目是:
你准备去海南旅游,现在要订购机票。机票的价格受季节旺季,淡季影响,而且头等舱和经济舱价格也不同。假设机票原价为5000元,4~10月为旺季,旺季头等舱九折,经济舱打八折,淡季头等舱打五折,经济舱打四折。编写程序,使用嵌套if选择结构,根据出行的月份和选择的舱位输出实际机票的价格。
如下:
请输入您出行的月份:1~12
5
请问你选择头等舱还是经济舱?头等舱请输入1,经济舱输入2
2
您的机票价格为:3000.0
注:粗,斜体为从键盘录入的数据。
分析及执行:
- 使用if镶嵌结构
- 使用mo保存月份
- 使用air对飞机舱位进行划分
- 使用if镶嵌结构对旺季时的头等舱及经济舱进行划分
- 使用if多重结构,对淡季时头等舱及经济舱进行划分
- 逻辑问题,很费脑筋!思考了一晚上才弄出来,而且因为对if镶嵌不熟悉,所以吃了不少亏。。。
参考代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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 { } } } } |