黑马程序员技术交流社区

标题: 关于小明存款的编程疑问,结果貌似不对? [打印本页]

作者: XiaoS    时间: 2014-1-4 22:08
标题: 关于小明存款的编程疑问,结果貌似不对?
本帖最后由 XiaoS 于 2014-1-4 23:13 编辑

/*在论坛看到这样一个题目:小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。每到周日,小明拿到钱后会把所有零花钱花掉一半。请编程计算,从周一开始,小明需要多少天才能存够100元?我的代码输出结果是14天,应该是第13天存款就达到100元了,请问我应该怎么修改代码呢?*/

class Save {
public static void main(String[] args) {

  int sum = 0;//定义存款总数

  int i = 1;//定义天数
  while (sum < 100) {
   
   if (i%7 == 0) //判断是否到了周日
    sum = (sum + 20)/2;//存款减半
   else
    sum += 10;//每天存款增加10元
   i++;//天数自增
  }
  System.out.println(i);//输出天数
  
}
}

作者: 七录斋    时间: 2014-1-4 22:25
System.out.println(i-1)就ok了,因为你看你程序中,i=1时,sum=0,所以sum=100时,i要减1.

个人拙见,进攻参考,如有错误,还望赐教。
作者: 李兴    时间: 2014-1-4 22:28
看一下这个代码吧

  1. class Save {
  2. public static void main(String[] args) {
  3.           int sum = 0;//定义存款总数
  4.               int i = 0;//定义天数
  5.               while (sum < 100) {
  6.                i++;
  7.                if (i%7 == 0) //判断是否到了周日
  8.                 sum = (sum + 20)/2;//存款减半
  9.                else
  10.                 sum += 10;//每天存款增加10元
  11.               }
  12.               System.out.println(i);//输出天数
  13. }
  14. }
复制代码


你的代码到13天应经存够钱了,但是又徒劳的i++;了
作者: 诺忔。初禾、    时间: 2014-1-4 22:34
  1. class dmo {
  2.         public static void main(String[] args) {
  3.                 int sum = 0;// 定义存款总数

  4.                 int i = 1;// 定义天数
  5.                 while (sum < 100) {

  6.                         if (i % 7 == 0) // 判断是否到了周日
  7.                                 sum = (sum + 20) / 2;// 存款减半
  8.                         else
  9.                                 sum += 10;// 每天存款增加10元
  10.                         if (sum < 100) {
  11.                                 i++;// 天数自增
  12.                         }
  13.                 }
  14.                 System.out.println(i);// 输出天数
  15.         }
  16. }
复制代码

作者: daoyua    时间: 2014-1-4 23:06
多算了1个i++,满足条件后,你还加了一天,所以多了一天,其实你开始把i设置为0,在while里面先++就行了
作者: 净坛使者    时间: 2014-1-4 23:11
class Save {
public static void main(String[] args) {
  int sum = 0;//定义存款总数

  int i = 0;//定义天数
  while (sum < 100) {
   
   if (i%7 != 0) //判断是否到了周日
   { sum += 10;}//每天存款增加10元
  
   else{
sum = (sum + 20)/2;//存款减半
   }
    i++;//天数自增}
  }
  System.out.println(i-1);//输出天数
  
}
}
作者: 小悠久    时间: 2014-1-5 08:35
本帖最后由 小悠久 于 2014-1-5 08:41 编辑

你看下我的代码,你将i++放到拉后面,所以当到100时它会再加上1天,所以输出的是i+1天
class Test16 {
public static void main(String[] args) {
  int sum = 0;//定义存款总数

  int i = 0;//定义天数
   while (sum < 100)
   {
           i++;//天数自增
            if (i%7 == 0) //判断是否到了周日
             {
                    sum = (sum + 20)/2;//存款减半
             }
            else
             {
                    sum += 10;//每天存款增加10元
             }
            
   }
   System.out.println(i);//输出天数
   
}
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2