A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不存在的奇迹 中级黑马   /  2015-4-14 20:55  /  1445 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /**
  2. * 10、 小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。
  3. *                 每到周日,小明拿到钱后会把所有零花钱花掉一半。
  4. *                 请编程计算,从周一开始,小明需要多少天才能存够100元?
  5. * @author maojunjie
  6. *
  7. */
  8. public class Test10 {
  9.         public static void main(String[] args) {
  10.                 //定义一个记录小明零花钱总和的变量
  11.                 int sum = 0;
  12.                
  13.                 //定义一个天数
  14.                 int day = 0;
  15.                
  16.                 //通过while循环来计算天数
  17.                 while(sum <= 100){
  18.                         day++;
  19.                         if(day%7 != 0){
  20.                                 sum += 10;
  21.                                 System.out.println("小明第"+day+"天存了"+sum+"钱");
  22.                         }else{
  23.                                 sum = (sum+20)/2;
  24.                                 System.out.println("小明第"+day+"天存了"+sum+"钱");
  25.                         }
  26.                 }
  27.                
  28.                 //最后输出天数
  29.                 System.out.println("小明总共花了"+day+"天存够100钱");
  30.         }
  31. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 这是测试题

查看全部评分

26 个回复

倒序浏览
顶贴来了。
回复 使用道具 举报
大家交流一下 这里到13天 钱就已经是100元了 接下去14天 正好是周日 所以(100+20)/2 = 60元
回复 使用道具 举报
顶。。。。。
回复 使用道具 举报

请教下 你的技术分怎么得到的吗? xiexie
回复 使用道具 举报
果然是牛人这种问题都能实现,好谢幕
回复 使用道具 举报
君嘘 中级黑马 2015-4-14 21:34:27
7#
你不是已经做出来了嘛。。。
回复 使用道具 举报
牛。。。。。。。。
回复 使用道具 举报
君嘘 发表于 2015-4-14 21:34
你不是已经做出来了嘛。。。

但是13天的时候也是100块 想问下为什么不是13  
回复 使用道具 举报
不错,听详细的
回复 使用道具 举报
看不太懂,但还是顶一个。
回复 使用道具 举报
本帖最后由 君嘘 于 2015-4-17 14:50 编辑
不存在的奇迹 发表于 2015-4-15 18:42
但是13天的时候也是100块 想问下为什么不是13

哦 原来如此,我之前都没运行过你的代码。
你是说为啥得出的结果是第19天而不是第13天对吧。

因为的while的循环条件写错了,  sum<=100的时候循环,代表即使存够了100也会再运行。

第13天存够100了,但是因为sum=100的时候也循环,所以就继续第14天。
而第14天刚刚好是星期天所以要花去一半
所以sum变成了60. 那么60回去给while一判断,还是<=100,所以又继续循环了。

你程序运行结果第19天存够了100也不是真正的结果,而是因为第19天的钱已经超过了100。
真正存够100的是第18天……
然后满足循环条件继续运行::
此时day为19
sum又加了10,变成了110.
再次循环的时候不满足条件,所以循环结束了。而你最终得出的结果也错误了。

改动很简单,你把while的条件改成sum==100就可以了
回复 使用道具 举报
君嘘 发表于 2015-4-15 20:46
哦 原来如此,我之前都没运行过你的代码。
你是说为啥得出的结果是第19天而不是第13天对吧。

果然大神 理解了  我也运行了这个代码 没看出来 可能是因为刚刚开始自学吧
回复 使用道具 举报
支持。。。。。。。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
君嘘 发表于 2015-4-15 20:46
哦 原来如此,我之前都没运行过你的代码。
你是说为啥得出的结果是第19天而不是第13天对吧。

首先谢谢你 这么详细 我都理解都说的  我也知道 13天 跟 19天的区别在于 判断条件100那里  我其实疑惑的是  为什么这个题目的答案不是13天  而是19天   因为根据题意  13天已经满足100元了  
回复 使用道具 举报
顶贴。。。。
回复 使用道具 举报
额 我表示看不懂代码
回复 使用道具 举报
不存在的奇迹 发表于 2015-4-16 21:47
首先谢谢你 这么详细 我都理解都说的  我也知道 13天 跟 19天的区别在于 判断条件100那里  我其实疑惑的 ...

你没认真看我的回复吧
回复 使用道具 举报
sisel 中级黑马 2015-4-17 09:15:13
19#
没有判断到达100元的部分
回复 使用道具 举报
路过。。。。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马