黑马程序员技术交流社区

标题: for循环和自增运算符中的坑 [打印本页]

作者: 泛大陆    时间: 2015-7-28 08:43
标题: for循环和自增运算符中的坑
小明的妈妈每天会给他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. }
复制代码

作者: halohoop    时间: 2015-7-28 10:04
  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. }
复制代码

作者: 章浩    时间: 2015-7-28 11:46
用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);
        }
}
作者: lizf2010    时间: 2015-7-28 15:14
用while循环好一些




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