[Java] MVC 编写程序计算净现值 2020.2.25 Java

源代码如下:

model层

package zlc.model;

/*** 
* @author 信1705-1班赵路仓
* @version 1.0
*/

public class Data {

    private double r;    //贴现率
    private double y;    //贴现因子
    private double rmb;    //现金
    
    public double getR() {
        return r;
    }
    public void setR(double r) {
        this.r = r;
    }
    public double getY() {
        return y;
    }
    public void setY(double y) {
        this.y = y;
    }
    public double getRmb() {
        return rmb;
    }
    public void setRmb(double rmb) {
        this.rmb = rmb;
    }
    
}

 

view层

package zlc.view;

/*** 
* @author 信1705-1班赵路仓
* @version 1.0
*/

public class View {

    public void print(double sum) {
        System.out.println(sum);
    }
    
}

 

Controller层

package zlc.controller;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import zlc.model.Data;
import zlc.view.View;

/*** 
* @author 信1705-1班赵路仓
* @version 1.0
*/

public class Controller {

    DecimalFormat format = new DecimalFormat("#.00");
    Scanner sc = new Scanner(System.in);
    
    private Data data;
    private View view;
    
    public Controller(Data data,View view) {
        this.data=data;
        this.view=view;
    }
    
    public static double formatDouble1(double d) {
        return (double)Math.round(d*10000)/10000;
    }
    
    //键盘输入数据
    public List<Data> Scin() {
        List<Data> datas =new ArrayList<Data>();
        try {
            System.out.println("请输入年数:");
            int x = sc.nextInt();
            System.out.println("请输入贴现率:");
            double y = sc.nextDouble();
            for(int i=0;i<=x;i++) {
                Data data=new Data();
                System.out.println("请输入第"+i+"年的盈亏金额:");
                double rmb = sc.nextDouble();
                data.setR(y);//贴现率
                data.setRmb(rmb);//本年金额
                data.setY(1/Math.pow((1+y), i));//,第一年的贴现因子是rmb本身,所以无需讨论初始投资年的情况
                System.out.println("第"+i+"年,"+"贴现率"+y+"贴现因子"+formatDouble1((1/Math.pow((1+y), i)))+"金额:"+rmb+"计算后"+rmb*formatDouble1((1/Math.pow((1+y), i))));
                datas.add(data);
            }
        }catch(Exception e) {
            System.out.println("输入格式错误!");
        }
        return datas;
    }
    
    //计算净现值
    public double count() {
        List<Data> datas =new ArrayList<Data>();
        double sum = 0;
        datas=Scin();
        for(Data d:datas) {
            sum+=formatDouble1(d.getRmb())*formatDouble1(d.getY());
            //System.out.println(d.getRmb());
            //System.out.println(d.getY());
            //System.out.println(d.getRmb()*d.getY());
            //System.out.println("净现值为:"+sum);
        }
        return sum;
    }

    public Data getData() {
        return data;
    }

    public void setData(Data data) {
        this.data = data;
    }

    public View getView() {
        return view;
    }

    public void setView(View view) {
        this.view = view;
    }
    
}

Demo测试类

package demo;

import zlc.controller.Controller;
import zlc.model.Data;
import zlc.view.View;

public class Demo {

    public static void main(String[] args) {
        
        Data data=new Data();
        View view=new View();
        Controller controller=new Controller(data,view);
        
        System.out.println("程序开始");
        view.print(controller.count());
        System.out.println("程序结束");
    }
}

测试步骤:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值