练习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
成功换购:欧莱雅爽肤水一瓶

*:红色斜体数字表示需要用户从控制台输入.

 
参考代码(源代码)如下:
/*
* 这是我遇到的真正一个难题,思考了很久,问了表叔(资深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来减少垃圾评论。了解我们如何处理您的评论数据