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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 胡建伟 于 2013-11-9 09:52 编辑

需求:小明的妈妈每天会给他20元零花钱,小明每天花一半存一半,每过7天小明又会把所有存款花掉一半,请编程计算小明需要多少天才能存够100元?
public class cunkuan {
  public static void main(String args[]){
   int x=0;//定义天数
   for (int sum=0;sum<=100;sum+=(20/2))//???
   {
    if(x%7==0){
        sum=sum/2;//每过七天的存款
       }
       x++;
   }
   System.out.println("小明需要"+x+"才能存够100元");
  }

}
请各位大虾帮忙分析下这里的for循环,不太明白,请详细解释下哦

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

6 个回复

正序浏览
对于初学者,我觉得以下方式可能让你更好理解一点。




int sum=0;//存钱的篮子
                int day=1;//星期几的天数
                int num=0;//累加的天数
                int money=0;//钱
                while(true){
                        if(day%7!=0){//星期一到星期六
                                money=20;//每天给20块。
                                sum+=10;//每天存10块。
                                num++;
                        }else{
                                money=20;//给他20元
                                sum=(sum+money)/2;//用掉一半
                                num++;
                        }
                        if(day>7){
                                day=1;
                        }
                        if(sum==100){
                                System.out.println("进入");
                                break;
                        }
                        day++;
                }
                System.out.println(num);
               

        }
回复 使用道具 举报
用线程去做吧 生产者--消费者模型~~~
回复 使用道具 举报
这个循环是按存款额来做条件判断的。
基本的点是每次循环完就是过了1天x++,每次过完一天都会再存入10元sum+=(20/2)
即每天都会存10块是不会变的。不管你花多少。

然后每7天 x%7==0 都会花掉当前存款的一半sum=sum/2。

条件都全了,就让计算机算就好了。存款<=100,那就继续过日子,过1天存10块。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
for(起始存款为0;存款<=100;存款=存款+10){
    如果是星期天{
        存款=存款/2
    }
    天数=天数+1;
}   //如果不是星期天,存款=存款+10,天数=天数+1
    //如果是星期天,存款=存款/2+10,天数=天数+1
    //如果存款>100,跳出循环
回复 使用道具 举报
//需求:小明的妈妈每天会给他20元零花钱,小明每天花一半存一半,每过7天小明又会把所有存款花掉一半,请编程计算小明需要多少天才能存够100元?
public class cunkuan {
  public static void main(String args[]){
   int x=0;//定义天数
   for (int sum=0;sum<=100;sum+=(20/2))//把存款sum初始化为0,循环条件为sum<=100,更新为sum = sum + (20/2)
   {                                                                        //第一次循环,sum = 0 + 10 = 10,执行x++, x = 1 表示第一天       
    if(x%7==0){                                                        //第二次循环,sum = 10+ 10 = 20, 执行x++, x = 2        表示第二天·······
        sum=sum/2;//每过七天的存款
       }
       x++;
   }
   System.out.println("小明需要"+x+"才能存够100元");
  }
}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马