创建一个计算利息的表格,并显示10年的利息成本

时间:2017-04-04 20:30:26

标签: java eclipse

该行的兴趣类别为" 6.5"什么时候应该是" 65"。这些数字每年保持不变,每年都要更新。此外,我似乎无法弄清楚如何在第二年获得新的初始余额进行更新。通过更新我的意思是第二年的新的初始余额应该是第一年的期末余额,依此类推。

我的第二个问题是我的回复陈述calcInterest();。我无法将结果带到另一种方法中。感谢您的帮助!

import java.util.*;
import java.text.*;

public class Interest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        printIntro(); // Inform user what program will compute
        Scanner console = new Scanner(System.in);
        System.out.print("What is the deposit balance ?: ");
        double balance = console.nextDouble();
        System.out.println(balance);
        System.out.print("What is the interest rate ?: ");

        double rate = console.nextDouble();
        System.out.println(rate);
        System.out.print("How many years?: ");
        int years = console.nextInt();
        System.out.println(years);
        printTable(years, balance, rate);
    }


    public static void printIntro() {
        System.out.println("This program will calculate interest on a deposit of your choosing over a specified period.");
    }

    public static void printTable(int numRows, double balance, double rate) {
        System.out.println("Year" + "\t" + "Balance" + "\t" + "\t" + "Interest" + "\t" + "New Balance");
        System.out.println("----" + "\t" + "-------" + "\t" + "\t" + "--------" + "\t" + "-----------");
        for (int i = 1; i <= numRows; i++) {
            printRow(i, balance, rate);
        }
    }

    public static void printRow(int rowNum, double balance, double interest) {
        System.out.println(rowNum + "\t" + balance + "\t" + "\t" + interest + "\t" + "\t" + (balance + interest));
        balance = (balance + interest);
    }

    public static double calcInterest(double balance, double rate) {
        double interest = balance * (rate / 100);
        return interest;
    }
}

1 个答案:

答案 0 :(得分:1)

我认为你没有小问题;我认为你有一个很大的问题:

您的应用程序中没有隐式状态,因此您的计算已被破坏。

(另外,你甚至不是使用你的上一个方法。)

这更像是一个架构问题,所以我不会发布完整的解决方案,而是强调这个方法。

public static void printRow(int rowNum, double balance, double interest) {
    System.out.println(rowNum + "\t" + balance + "\t" + "\t" + interest + "\t" + "\t" + (balance + interest));
    balance = (balance + interest);
}

Java始终是pass-by-value。这对您的应用程序意味着,balance = (balance + interest)之类的操作永远不会产生任何影响,因为更改只在printRow方法的范围内完成。这意味着您的值将 保持不变 ,即使这不是您打算做的。

这里可能的解决方法是:

  • balance
  • 引入静态变量
  • 介绍balance
  • 的字段

我想将此作为练习留给读者,因为您自己解决这些问题并探索适合您的应用的内容非常重要。我和其他专业人士可能有解决方法的方法,但是你也可以得出自己的结论。