复利计算单元测试

因为eclipse程序故障用不了,所以使用myeclipse进行单元测试

package ch1;

import java.util.InputMismatchException;
import java.util.Scanner;

public class fuli {

    public static void main(String[] args) {
        System.out.print("请选择求单利1,复利2,本金3,时间4,利率5,投资6,贷款月还款计算7,退出8");
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        switch (a) {
        case 1:
            danli();
            break;
        case 2:
            fulili();
            break;
        case 3:
            benjin();
            break;
        case 4:
            shijian();
            break;
        case 5:
            lilv();
            break;
        case 6:
            touzi();
            break;
        case 7:
            huankuan();
            break;
        case 8:
            break;
        default:
            System.out.print("请重新输入");
            main(null);
            scanner.close();

        }

    }

    static void benjin() {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入预期钱数");
            double A = Math.abs(scanner.nextDouble());
            System.out.print("请输入年利率");
            double B = Math.abs(scanner.nextDouble());
            System.out.print("请输入存入年限");
            int C = Math.abs(scanner.nextInt());
            double D = 1;
            for (int i = 1; i <= C; i++) {
                D = D * (1 + B);
            }
            System.out.println("本金" + String.format("%.4f", (A / D)));
        } catch (InputMismatchException e) {
            benjin();
        }
        main(null);
        scanner.close();
    }

    static void fulili() {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入本金");
            double A = Math.abs(scanner.nextDouble());
            System.out.print("请输入年利率");
            double B = Math.abs(scanner.nextDouble());
            System.out.print("请输入存入年限");
            int C = Math.abs(scanner.nextInt());
            double D = 1;
            for (int i = 1; i <= C; i++) {
                D = D * (1 + B);
            }
            System.out.println("复利终值" + String.format("%.4f", (A * D)));
        } catch (InputMismatchException e) {
            fulili();
        }
        main(null);
        scanner.close();
    }

    static void danli() {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入本金");
            double A = Math.abs(scanner.nextDouble());
            System.out.print("请输入年利率");
            double B = Math.abs(scanner.nextDouble());
            System.out.print("请输入存入年限");
            int C = Math.abs(scanner.nextInt());
            double D = 1;
            D = A * B * C;
            System.out.println("单利终值" + (A + D));
        } catch (InputMismatchException e) {
            danli();
        }
        main(null);
        scanner.close();
    }

    static void shijian() {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入本金");
            double A = Math.abs(scanner.nextDouble());
            System.out.print("请输入年利率");
            double B = Math.abs(scanner.nextDouble());
            System.out.print("请输入预期金额");
            double C = Math.abs(scanner.nextDouble());
            double D = 1;
            double E = 1;
            int i = 1;

            while (true) {
                D = D * (1 + B);
                E = A * D;
                if (E <= C)
                    i++;
                else
                    break;
            }

            System.out.println("需" + i + "年");
        } catch (InputMismatchException e) {
            shijian();
        }
        main(null);
        scanner.close();
    }

    static void lilv() {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入本金");
            double A = Math.abs(scanner.nextDouble());
            System.out.print("请输入预期金额");
            double B = Math.abs(scanner.nextDouble());
            System.out.print("请输入存入年限");
            double C = Math.abs(scanner.nextDouble());
            double D = 1;
            D = Math.pow(B / A, 1 / C) - 1;
            System.out.println("利率为" + String.format("%.4f", D));
        } catch (InputMismatchException e) {
            lilv();
        }
        main(null);
        scanner.close();
    }

    static void touzi() {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入投资额");
            double A = Math.abs(scanner.nextDouble());
            System.out.print("请输入年利率");
            double B = Math.abs(scanner.nextDouble());
            System.out.print("请输入存入年限");
            int C = Math.abs(scanner.nextInt());
            double D = 0;
            for (int i = 1; i <= C; i++) {
                D = D + A;
                D = D * (1 + B);
            }
            System.out.println("最终获利" + String.format("%.4f", D));
        } catch (InputMismatchException e) {
            touzi();
        }
        main(null);
        scanner.close();
    }

    static void huankuan() {
        // TODO 自动生成的方法存根
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入贷款额");
            double A = Math.abs(scanner.nextDouble());
            System.out.print("请输入贷款利率");
            double B = Math.abs(scanner.nextDouble());
            System.out.print("请输入贷款年限");
            int C = Math.abs(scanner.nextInt());
            double D = 0;
            for (int i = 1; i <= C; i++) {
                D = A * Math.pow(1.0 + B, C);
            }
            double Repayment = D / (C * 12);
            double interest = A * B * C;
            double sum = A + interest;
            double Repayment1 = sum / (C * 12);
            System.out.println("每月需要还款(单利)" + Repayment1);
            System.out.println("每月需要还款(复利)" + String.format("%.4f", Repayment));
        } catch (InputMismatchException e) {
            huankuan();
        }
        main(null);
        scanner.close();
    }

}

首先进行测试是数值的大小输入

如图,输入过大数值

与预期结果一致,所以没有问题

再试试输入字符,如图

输入字符后显示重新输入,所以也没有问题

输入负值

出现负值的计算,负值输入的时候应该是重新输入

还进行了一部分的测试,由于问题比较多,还在改进,所以没有一一展示,会对复利计算进一步跟进完善的。

原文地址:https://www.cnblogs.com/chenshien/p/5339116.html