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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱婵 中级黑马   /  2014-2-20 12:40  /  2569 人查看  /  10 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

小明的妈妈每天会给他20元零花钱。
平日里,小明先花掉一半,再把一半存起来。
每到周日,小明拿到钱后会把所有零花钱花掉一半。
请编程计算,从周一开始,小明需要多少天才能存够100元?

  1. public class Test10 {
  2.         // 定义一个money 表示存钱数
  3.         private static int Mymoney = 0;
  4.         public static void main(String[] args) {
  5.                 // 定义一个日期数组
  6.                 int day[] = new int[] { 1, 2, 3, 4, 5, 6, 7 };
  7.                 // 定义count 统计天数
  8.                 int count = 0;
  9.                 boolean flag = true;
  10.                 while(flag){
  11.                         for(int i = 0; i< day.length; i++) {
  12.                                 int returnMoney = money(day[i]);
  13.                                 if(returnMoney >= 100){
  14.                                         flag = false;
  15.                                         continue;
  16.                                 }
  17.                                 count ++;
  18.                         }
  19.                 }
  20.                 System.out.println("小明存够100块钱需要:" + count+"天");
  21.         }

  22.         public static int money(int day) {
  23.                 // 计算每天小明妈妈给的钱 20元
  24.                 switch (day) {
  25.                 case 1:
  26.                         Mymoney += 10;
  27.                         break;
  28.                 case 2:
  29.                         Mymoney += 10;
  30.                         break;
  31.                 case 3:
  32.                         Mymoney += 10;
  33.                         break;
  34.                 case 4:
  35.                         Mymoney += 10;
  36.                         break;
  37.                 case 5:
  38.                         Mymoney += 10;
  39.                         break;
  40.                 case 6:
  41.                         Mymoney += 10;
  42.                         break;
  43.                 case 7:
  44.                         Mymoney = (Mymoney + 20) / 2;
  45.                         break;
  46.                 }
  47.                 return Mymoney;
  48.         }
  49. }
复制代码




评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

10 个回复

正序浏览
很烧脑啊
回复 使用道具 举报
基础题也可以拿来讨论的?
回复 使用道具 举报
→★稻草人☆ 发表于 2014-2-20 14:22
public static void show()
        {
                int  money=0;

//你思路没问题不过打印结果有问题  我优化了一下
//从新改了下  完整版的

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



        {
                int  money=0;
                                int day=0;
                for (int x=1;money<100 ;x++ )
                {
                        if(x%7==0)
                        {
                                money=(money+20)/2;
                        }
                        else
                        {
                            money=money+10;
                        }
                        day++;
                                                
                }        System.out.println(day);
        }
                }
回复 使用道具 举报
→★稻草人☆ 发表于 2014-2-20 14:22
public static void show()
        {
                int  money=0;

//你思路没问题不过打印结果有问题  我优化了一下

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



        {
                int  money=0;
                                int day=1;
                for (int x=1;money<100 ;x++ )
                {
                        if(x%7==0)
                        {
                                money=(money+20)/2;
                        }
                        else
                        {
                            money=money+10;
                        }
                        day++;
                                               
                }        System.out.println(day);
        }
                }
回复 使用道具 举报
        public static void main(String[] args)
        {
                //money:存的总钱
                //day:存钱的天数
                int money = 0, day = 0;
                while(money < 100) {
                        day++;
                        if(day%7 == 0){
                                money = (money+20) / 2;
                                continue;
                        }
                        money += 10;
                       
                }
                System.out.println("小明存100元需要"+day+"天!");
        }
回复 使用道具 举报
public class saveMoney1 {
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("存100元所需的天数为:  "+saveMoney1.getMoney());
        }
        public static int getMoney(){
                int myMoney=0;
                int day=1;
                while(myMoney<100){    //每7天为一个周期,存的钱数不足100,就继续循环
                        if(day%7!=0){
                                myMoney+=10;
                        }else{
                                myMoney+=20;
                                myMoney=myMoney/2;
                        }
                        day++;
                }
                return day-1;  //一定要注意,由于day++,所以当myMoney=100的时候,day多加了一天,一定要减去
        }
}
回复 使用道具 举报
→★稻草人☆ 发表于 2014-2-20 14:42
说实话,我也不知道我这思路到底对不对,不知你们还有没有别的方法可以做这道题。 ...

思路肯定可以,我用的是wheil(true){if()break;}
没你的方法好。
回复 使用道具 举报

说实话,我也不知道我这思路到底对不对,不知你们还有没有别的方法可以做这道题。
回复 使用道具 举报
→★稻草人☆ 发表于 2014-2-20 14:22
public static void show()
        {
                int  money=0;

不错。大姆指
回复 使用道具 举报
public static void show()
        {
                int  money=0;
                for (int x=1;money<100 ;x++ )//money是存的钱,定义它小于100,是因为它还要加上当天妈妈给的20块
                {
                        if(x%7==0)
                        {
                                money=(money+20)/2;
                        }
                        else
                        {
                            money=money+10;
                        }
                        System.out.println(x+"...."+num);
                }       
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马