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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 泛大陆 中级黑马   /  2015-7-28 08:43  /  475 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

小明的妈妈每天会给他20元零花钱。平日里,小明先花掉一半,再把一半存起来。每到周日,小明拿到钱后会把所有零花钱花掉一半。请编程计算,从周一开始,小明需要多少天才能存够100元?
这道题心算就能算出结果了,写代码的时候刚开始就被坑了,没反应过来for循环体结束后自增还会再执行一次
  1. public class Test10
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 /*
  6.                 int x=1,sum=0;
  7.                  for(;sum<100;x++)
  8.                  {
  9.                           if(x%7==0)
  10.                                 sum=(sum+20)/2;
  11.                         else
  12.                                 sum=sum+10;
  13.                  }
  14.                  System.out.println("x="+x+"..."+"sum="+sum);//输出每天及当天总共存的零花钱       
  15.                 */
  16.                 for(int x=1,sum=0;sum<100;x++)
  17.                 {                       
  18.                         if(x%7==0)
  19.                                 sum=(sum+20)/2;
  20.                         else
  21.                                 sum=sum+10;
  22.                         System.out.println("x="+x+"..."+"sum="+sum);//输出每天及当天总共存的零花钱
  23.                 }
  24.                         
  25.         }

  26. }
复制代码

点评

被注释的代码输出是x=14,sum=100.正确的是x=13  发表于 2015-7-28 08:48

4 个回复

倒序浏览
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int days = 1;
  6.                 int sumMoney = 0;
  7.                 int saveMoney = 10;
  8.                 for( ; true; days++)
  9.                 {
  10.                         if(days%7==0)
  11.                         {
  12.                                 sumMoney += saveMoney*2;
  13.                                 sumMoney = sumMoney/2;
  14.                         }
  15.                         else
  16.                                 sumMoney+=saveMoney;
  17.                         if(sumMoney==100)
  18.                         {
  19.                                 System.out.println("sumMoney: "+sumMoney+" days: "+days);
  20.                                 break;
  21.                         }else
  22.                                 System.out.println("sumMoney: "+sumMoney);
  23.                 }
  24.                 System.out.println("sumMoney: "+sumMoney+" days: "+days);
  25.         }
  26. }
复制代码
回复 使用道具 举报
用do。。while嘛
class Test
{
        public static void main(String[] args)
        {
                int days=0,money=0;
                 do{
                        days++;
                        //判断是否是周日
                        if (days%7==0)
                        {
                                money=(money+20)/2;
                        }
                        else
                        {
                                money=money+10;
                        }
                    }
                while(money<100);
                System.out.println(days);
        }
}
回复 使用道具 举报
用while循环好一些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马