查看完整题目和答题点此前往
首先分析题目,提取关键信息:
- 每个月的月初妈妈给津津300元钱
- 津津会预算这个月的花销
- 津津可以随时把整百的钱存在妈妈那里,到了年末她会加上20%还给津津。
- 每个月得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 100 元或恰好 100 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。
- 例如 11月初津津手中还有83元,妈妈给了津津300 元。津津预计11月的花销是180 元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。
- 因为存在妈妈那里的钱在年末之前不能取出,可能出现不够这个月的原定预算的情况。
- 根据 2004 年 1 月到 12 月每个月津津的预算,判断会不会出现这种情况。
- 如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%,还给津津之后,津津手中会有多少钱。
然后分析输入输出格式:
- 输入12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。
- 一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出 −X,X 表示出现这种情况的第一个月;否则输出到 2004年年末津津手中会有多少钱。
由上面分析可知:
- 一个循环进行持续输入,次数为12,可以直接从1开始
- 一个变量接收输入的预算
- 一个整数记录津津手中剩余的钱
- 一个整数记录存放在妈妈那里的钱
- 然后对数据进行处理
- 每个月手上的钱=上个月手上剩下的钱+每个月妈妈给的钱-预算
- 如果手上的钱变成负数,则输出月份的负数,程序结束
- 如果大于等于100,则进行存钱
- 最后一年都没有超预算,则输出津津所有的钱
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int a,sum=0,savingPot=0;//a是预算,sum是手上有多少钱,savingPot存了多少钱
for(int i=1;i<=12;i++){
a=scanner.nextInt();
sum=sum+300-a;//每个月给300,把钱减去预算
if(sum<0){//手上钱不够
System.out.println(-i);
return;
}
else if(sum>=100){//手上钱大于等于100
savingPot+=sum/100*100;//先存钱
sum-=sum/100*100;//再减掉手中的钱
}
//比100少就收着
}
//输出手上的钱和妈妈那的钱(包括利息)
System.out.println((int)(sum+savingPot*1.2));
}
}
注意: 存钱时需要先记录存钱的数量,再对手中钱的数量进行改变。还有别忘了妈妈那里存的钱。