天天看點

Compound Interest Calculator3.0續

1.你寫的程式能讓客戶随意操作嗎?誤輸入資料、不小心做了非正常的操作程式是什麼反應? 

2.如果向銀行貸款10萬元,年利率6.5%,期限為10年,那麼每月等額本息還款多少?(算複利條件下等額還款金額)

import java.util.Scanner;

public class Calculator4 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        int key=0;
        while (key == 0 || key == 1 || key == 2 || key==3 || key==4 || key==5) {
            System.out.println("歡迎使用" + "\n計算單利和複利終值,請按1" + "\n計算本金,請按2"
                    + "\n股票投資,請按3"
                    + "\n計算利率,請按4"
                    + "\n計算資産總值,請按5"
                    + "\n計算月等額還款金額,請按6"
                    + "\n請輸入:");
            int key1 = scanner.nextInt();
            if (key1 == 1) {
                Calculator4.DanliandFuli(); // 計算單利和複利
                break;
            } else if (key1 == 2) {
                Calculator4.Principal(); // 計算本金
                break;
            } else if (key1 == 3) {
                Calculator4.Stock(); // 股票投資(計算時間)
                break;
            } else if (key1 == 4) {
                Calculator4.Rate();  // 計算利率
                break;
            } else if (key1 == 5) {
                Calculator4.Assets();  // 計算資産總值
                break;
            }else if (key1 ==6 ) {
                Calculator4.Repayment();  // 計算資産總值
                break;
            }else {
                System.out.println("\n輸入錯誤!請重新輸入!");
            }
        }
    }
 
    private static void Repayment() {
        // TODO Auto-generated method stub
        double sum,i;
         int month;
         Scanner scanner = new Scanner(System.in);
         System.out.print("請輸入本金:");
        double money = scanner.nextDouble();
        System.out.print("請輸入年利率:");
        double rate = scanner.nextDouble();
        System.out.print("請輸入貸款年數:");
        int years = scanner.nextInt();
        i=rate/12;//k為月利率
        month=years*12;//month為貸款月數
        sum=money*i*Math.pow(1+i, month)/(Math.pow(1+i,month)-1);
        System.out.println("每月等額還款金額為:"+sum);
    }

    private static void DanliandFuli() {
        // TODO 自動生成的方法存根
        double N = 1, sum;
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入本金:");
        double money = scanner.nextDouble();
        System.out.println("請輸入存錢年數:");
        int years = scanner.nextInt();
        System.out.println("請輸入年利率:");
        double rate = scanner.nextDouble();
        sum=money+money*years*rate;
        System.out.println("單利計算值為:" + sum);
        sum=0;
        for (int i = 1; i <= years; i++) {
            N = (1 + rate) * N;
        }
        sum = N * money;
        System.out.println("複利計算值為:" + sum);
    }
 
    private static void Principal() {
        // TODO 自動生成的方法存根
        double N = 1, money;
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入複利終值:");
        double sum = scanner.nextDouble();
        System.out.println("請輸入存錢年數:");
        int years = scanner.nextInt();
        System.out.println("請輸入年利率:");
        double rate = scanner.nextDouble();
        for (int i = 1; i <= years; i++) {
            N = (1 + rate) * N;
        }
        money = sum / N;
        System.out.println("應投入的本金為:" + money);
    }
 
    private static void Stock() {
        // TODO 自動生成的方法存根
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入本金:");
        double money = scanner.nextDouble();
        System.out.println("請輸入複利終值:");
        int sum = scanner.nextInt();
        System.out.println("請輸入年利率:");
        double rate = scanner.nextDouble();
        int years=(int) ((Math.log(sum)/Math.log(1+rate))-(Math.log(money)/Math.log(1+rate)));
        System.out.println("所需年限為:" + years);
    }
 
    private static void Rate() {
        // TODO 自動生成的方法存根
        double rate;
        Scanner scanner = new Scanner(System.in);
        System.out.print("請輸入本金:");
        double money = scanner.nextDouble();
        System.out.print("請輸入最後得到資産總值:");
        double sum = scanner.nextDouble();
        System.out.print("請輸入存錢年數:");
        int years = scanner.nextInt();
        rate=sum/(money*years);
        System.out.println("利率為:" + rate);
    }
 
    private static void Assets() {
        // TODO 自動生成的方法存根
        double sum;
        Scanner scanner = new Scanner(System.in);
        System.out.print("請輸入本金:");
        double money = scanner.nextDouble();
        System.out.print("請輸入利率:");
        double rate = scanner.nextDouble();
        System.out.print("請輸入存錢年數:");
        int years = scanner.nextInt();
        sum=money*rate*years;
        System.out.println("若投資本金每年固定不變,最後得到的資産總值為:" + sum);
        sum=0;
        for(int i=1;i<=years;i++){
            sum=money*rate*1;
            money=sum;               
        }
        System.out.println("若連本帶利投資,最後得到的資産總值為:" + sum);
    }
}
示範結果:


        
Compound Interest Calculator3.0續
Compound Interest Calculator3.0續