练习15之:真正的难题

 

  • 这是我遇到的真正一个难题,思考了很久,问了表叔(资深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条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据