- 这是我遇到的真正一个难题,思考了很久,问了表叔(资深java工程师),问了老师
- 解决这个题的时候,遇到的最大问题是:1.逻辑问题;2.表现问题.
- 这个问题让我的求知欲变得特别强烈!
- 通过这个问题,我学到了很多.
- 继续努力,加油!
这个问题让我思考了整整一天,晚上回来,弄了半晚上.目前也只能做到这样了,修改了大部分BUG,也测试了很多遍.
下面是源代码,源代码结尾有开发思路,就不赘述了.因为对if镶嵌结构还不熟悉,所以源代码没有使用if镶嵌结构.
问题是:
在控制台输出以下信息:
请输入消费金额:
1000
是否参加优惠换购活动:
1.满50元,加2元换购百事可乐饮料一瓶
2.满100元,加3元换购500ml可乐饮料一瓶
3.满100元,加10元换购5公斤面粉
4.满200元,加10元换购一个苏泊尔炒菜锅
5.满200元,加20元可换购欧莱雅爽肤水一瓶
0:不换购
请选择:
5
本次消费总金额:1020
成功换购:欧莱雅爽肤水一瓶*:红色斜体数字表示需要用户从控制台输入.
1 | 参考代码(源代码)如下: |
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | /* * 这是我遇到的真正一个难题,思考了很久,问了表叔(资深java工程师),问了老师 * 解决这个题的时候,遇到的最大问题是:1.逻辑问题;2.表现问题. * 这个问题让我的求知欲变得特别强烈! * 通过这个问题,我学到了很多. * 继续努力,加油! */ import java.util.Scanner; public class P92_4{ public static void main (String[]args){ Scanner input = new Scanner (System.in); System.out.println("首先要感谢我表叔(资深java工程师),做这道题的时候,他帮助了我很多.");//写在前面的感谢词 System.out.println("*******************************"); System.out.println("温馨提示:亲,当购物总额大于10亿时,请切换到时光模式进行运算\n"); System.out.println("请输入消费金额:");//提示用户进行输入,并开小玩笑 int num = input.nextInt();//从键盘录入数据,存入num if ( num >0 && num < 50 ){ //使用if结构,定义num大于0并且小于50的时候,提示不符合活动 System.out.println("对不起,您的购物总额不足此次活动的最少金额,感谢您对本商场的支持!");//输出语句,提示不符合活动要求 } else { //else语句在这里的作用是:当用户输入的消费金额不足50元时,使下面的语句不在运行,也就是起一个截断的作用 System.out.println("是否参加优惠换购活动:"); System.out.println("1.满50元,加2元换购百事可乐饮料一瓶"); System.out.println("2.满100元,加3元换购500ml可乐饮料一瓶"); System.out.println("3.满100元,加10元换购5公斤面粉"); System.out.println("4.满200元,加10元换购一个苏泊尔炒菜锅"); System.out.println("5.满200元,加20元可换购欧莱雅爽肤水一瓶"); System.out.println("0:不换购"); System.out.println("请选择:"); } int add = input.nextInt();//从键盘录入数据,存入add if ( add == 0 ) { //add=0的时候,提示感谢 System.out.println("您选择不参加此次优惠换购活动,感谢您对本商场的支持!"); } else if ( num >=50 && num < 100 ){ //当金额大于50,小于100时运行此if结构内的代码 switch(add) { case 1 : num = num + 2 ; System.out.println("本次消费总金额:"+num); System.out.println("成功换购:百事可乐饮料一瓶"); break; } } else if ( num >= 100 && num < 200 ){ //当金额大于100,小于200时运行此if结构内的代码 switch (add) { case 2 : num = num + 3 ; System.out.println("本次消费总金额:"+num); System.out.println("成功换购:500ml可乐饮料一瓶"); break; case 3 : num = num + 10 ; System.out.println("本次消费总金额:"+num); System.out.println("成功换购:5公斤面粉"); break; } } else if ( num >=200 && num < 1000000000 ){ //当金额大于200,小于10亿时运行此if结构内的代码 switch (add){ case 4 : num = num + 10 ; System.out.println("本次消费总金额"+num); System.out.println("成功换购:一个苏泊尔炒菜锅"); break; case 5 : num = num + 20 ; System.out.println("本次消费总金额:"+num); System.out.println("成功换购:欧莱雅爽肤水一瓶"); break; default: System.out.println("\n选择错误,请输入相应选项:\n购物总额大于50小于100请选择:1.\n购物总额大于100并且小于200请选择:2或3.\n购物总额大于200请选择:4或5."); break; } } else { System.out.println("检查一下,是不是输入错了,然后重新运行"); } System.out.println("\n\n************运算结束,下面是提示内容*********"); System.out.println("此版本与书上相比,增加了以下内容,并严格了某些条件:"); System.out.println("1.消费金额必须与促销条件符合(比如:消费金额为50元,就不能选择满100元及其他的活动)"); System.out.println("2.消费金额小于50元将提示错误,后面的代码停止运行"); System.out.println("3.消费金额最大不能超过10亿(写成数字类型:1000000000),因为我发现int类型能储存的最大值是10亿,否则报错"); System.out.println("4.由于jvm(java虚拟机)是由main开始执行程序(由上到下),因此不能把int add = input.nextInt();这样的语句写在if结构内,否则在当前if结构外的调用将出错"); System.out.println("5.当消费金额小于50时,本提示也不会出现.."); System.out.println("*********************"); System.out.println("实现思路:"); System.out.println("1.从键盘录入数据,存入变量num"); System.out.println("2.以if结构来判断num是否大于0,小于50.\n\t若满足此条件则提示:对不起,您的购物总额不足此次活动的最少金额,感谢您对本商场的支持!\n\t并用else结构将即将输入的5个条件包含起来.\n\t*此步骤可省略,若需严格可保留此步骤"); System.out.println("3.以system.our.println输出书上显示的5个条件,数据必须为:1,2,3,4,5,0"); System.out.println("4.从键盘录入数据,存入变量:add."); System.out.println("5.使用if多重结构,分别对50,100,200三个数之间的关系进行定义"); System.out.println("6.使用switch在if多重结构中,进行运算及提示"); System.out.println("7.使用else提示错误"); System.out.println("8.大功告成!"); } } |
《练习15之:真正的难题》上有1条评论