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;
}
}
}
} |