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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.itheima;

import java.util.Scanner;

public class Test10 {
        /**第十题
         * 10、 小明的妈妈每天会给他20元零花钱。
                平日里,小明先花掉一半,再把一半存起来。
                每到周日,小明拿到钱后会把所有零花钱花掉一半。
                请编程计算,从周一开始,小明需要多少天才能存够100元?
         * @param args
         */
        //小明存的钱数
        private static int maneySum = 0;
        //所用的天数
        private static int day = 1;
        //目标钱数
        private static int endManay;
        public static void main(String[] args) {
                //初始化存的钱数
                maneySum = 0;
                System.out.println("******欢迎您进入存钱计算系统******\n规则如下:\n例如:小明的妈妈每天会给他20元零花钱。\n平日里,小明先花掉一半,再把一半存起来。\n每到周日,小明拿到钱后会把所有零花钱花掉一半。\n该编序计算,小明需要多少天才能存够n(n>0)元?");
                while(true)
                {
                        System.out.println("请输入目标存钱的总数(注意:必须大于0):");
                        //初始化接收键盘输入的scanner变量 用于获取用户输入的目标存钱数
                        Scanner userInputManay = new Scanner(System.in);
                        //该异常会在输入的不是数字的情况下进入catch异常处理
                        try {
                                //获取用户输入要存的目标钱数,如果输入的不是数字则会抛出异常,进入catch语句
                                endManay = userInputManay.nextInt();
                                while(true)
                                {
                                        System.out.println("请输入您是从周几开始存的(1-7):");
                                        //用于获取用户输入从周几开始存钱
                                        Scanner userInoutDay = new Scanner(System.in);
                                        try {
                                                day = userInoutDay.nextInt();
                                                break;
                                        } catch (Exception e) {
                                                //开始存钱的起始日期(周几),因为一周有7天所以不能大于7
                                                if(day > 7)
                                                {
                                                        System.out.println("您输入的开始日期有误(超出了范围1-7)!!!请重新输入:");
                                                }
                                                else
                                                        System.out.println("您输入的不是日期!!!请重新输入:");
                                                continue;
                                        }
                                }
                                break;
                        }catch (Exception e) {
                                System.out.println("您输入的存钱目标错误!!!请重新输入:");
                                continue;
                        }
                }
                //初始化天数,day=1也代表是周一
                //day = 1;
                while(true)
                {
                        //如果符合条件就是周日
                        if(day % 7 == 0)
                        {
                                maneySum += 20;
                                //是周日,则化掉一半
                                maneySum /=2;
                                System.out.println("第" + day + "天,是周日,花去一半。剩余:" + maneySum);
                                day ++;
                        }
                        //不是周日
                        else
                        {
                                //存的总钱数增加20-20/2
                                maneySum += (20/2);
                                System.out.println("第" + day + "天,不是周日,增加10。目前总数为:" + maneySum);
                                //存的总钱数大于等于100
                                if(maneySum >= endManay)
                                {
                                        //输入所需的天数
                                        System.out.println("小明需要" + day + "天才能存够" + endManay + "元");
                                        //中断循环
                                        break;
                                }
                                //总钱数不到100,则天数增加
                                else
                                        day++;
                                continue;
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

5 个回复

正序浏览
好夸张!
回复 使用道具 举报
董月峰 发表于 2014-1-4 13:37
我的结论是14天- -,楼主大神,我给你看看我这菜鸟写的源文件
原文交代从周一算起,存到100元要多少天,所 ...

还没开始拿钱呢 , 就先算上一天了 ?
回复 使用道具 举报
本帖最后由 小悠久 于 2014-1-5 08:48 编辑

回复董月峰:
你那个是有错误的,真确的答案是13天,你在达到100元时多加拉一天
public class Test16
{
         public static void main(String[] args)
         {
                 int Day=0;
                 for(int sum=0;sum<100;)
                 {
                         Day++;
                         if(Day%7!=0)
                         {
                                 sum=sum+10;
                         }
                         else
                         {
                                 sum=(sum+20)/2;
                         }
                        
                 }
                 System.out.println(Day);
         }
}
回复 使用道具 举报
本帖最后由 董月峰 于 2014-1-4 14:00 编辑

我的结论是14天- -,楼主大神,我给你看看我这菜鸟写的源文件
原文交代从周一算起,存到100元要多少天,所以我也没多想,直接做小学应用题的做法2分钟刷刷写完的
ublic class Test10
{
        public static void main(String[] args)
        {
                int Day=1;
                for(int sum=0;sum<100;)
                {
                        if(Day%7!=0)
                        {
                                sum=sum+10;
                        }
                        else
                        {
                                sum=(sum+20)/2;
                        }
                        Day++;
                }
                System.out.println(Day);
        }
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
基础测试的题吗?好像看过很多次了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马