2021-05-12

老百姓需求:

1.输入总金额要摊销金额到每个月.

2.五月及之前的金额合并,五月之后每月显示,多出来的金额加到最后一月.

package com.cs.lbx;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        System.out.println("输入起始月数:");
        Scanner First = new Scanner(System.in);
        int f = First.nextInt();

        System.out.println("输入结束月数:");
        Scanner Last = new Scanner(System.in);
        int l = Last.nextInt();

        System.out.println("输入总金额:");
        Scanner zje = new Scanner(System.in);
        double z = zje.nextDouble();

        Calendar cal = Calendar.getInstance();//获取当前月份
        int month = cal.get(Calendar.MONTH) + 1;
        double je1=0.0;

        //平均值
        BigDecimal bd = new BigDecimal(z / (l - f + 1));//保留四位小数
        bd = bd.setScale(4, BigDecimal.ROUND_HALF_UP);
        System.out.printf("avg:");
        System.out.println(bd.doubleValue());
        double avg = bd.doubleValue();
        //当前月及之前金额
        double je = 0;
        if (l <= month) {
            je = z;
            je1 = z - je;
        } else {
            je = (month - f + 1) * avg;
            je1 = z - je;
        }
        if(l>month&&f>month){
            je=0;
            je1=z;
        }
        System.out.println("五月之前:" + je);
        //当前月之后金额

        BigDecimal je2 = new BigDecimal(je1);
        je2 = je2.setScale(4, BigDecimal.ROUND_HALF_UP);
        System.out.println("5月之后:" + je2);

        try {
            double v = je1 / (l - month);//5月后平均金额

            BigDecimal q = new BigDecimal(v);//保留四位小数
            q = q.setScale(4, BigDecimal.ROUND_HALF_UP);
            double v1 = q.doubleValue();

//        System.out.println("五月之后平均金额:" + v1);
//        System.out.println("最后一月金额:");
//        System.out.println(je2.doubleValue() - v1 * (l - month - 1));


        if (l > month&&f<=month) {
            for (int i = month+1; i<l; i++) {
                System.out.println(i+"月金额:"+v1);

            }
            System.out.print(l+"月金额:");
            BigDecimal w=new BigDecimal(je2.doubleValue() - v1 * (l - month - 1));
            w=w.setScale(4,BigDecimal.ROUND_HALF_UP);
            System.out.println(w.doubleValue());
        }
        if (l>month&&f>month){
            BigDecimal w2=new BigDecimal(z/(l-f+1));
            w2=w2.setScale(4,BigDecimal.ROUND_HALF_UP);
            for (int j=f;j<l;j++){
                System.out.println(j+"月金额:"+w2.doubleValue());
            }
            System.out.print(l+"月金额:");
            BigDecimal w3=new BigDecimal(z-w2.doubleValue()*(l-f));
            w3=w3.setScale(4,BigDecimal.ROUND_HALF_UP);
            System.out.println(w3.doubleValue());
        }
        }catch (NumberFormatException e){
        }
    }
}
//2到3月问题
//5月之后金额除不尽要补到最后一月 je1-avg*(l-month)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值