Java 兴趣不更新

Java 兴趣不更新,java,Java,这意味着计算利息,然后将其放入一个包含年份、利息和新余额的表格中。由于某些原因,利息计算不正确,且未更新 import java.util.Scanner; import java.text.*; public class Interest { public static void main(String[] args) { printIntro(); Scanner input = new Scanner(System.in);

这意味着计算利息,然后将其放入一个包含年份、利息和新余额的表格中。由于某些原因,利息计算不正确,且未更新

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

public class Interest 
{

    public static void main(String[] args) 
    {


        printIntro();
        Scanner input = new Scanner(System.in);
        System.out.print("Enter initial balance: ");
        int balanceAmount = input.nextInt();
        System.out.print("Enter interest rate: ");
        double interestRate = input.nextDouble();
        System.out.print("Enter the number of years: ");
        int years = input.nextInt();
        printTable(years, balanceAmount, interestRate);


    }  

    public static double calcInterest(double balanceAmount, double interestRate, double years) 
    {
        double interest = balanceAmount * Math.pow((1 + interestRate/100),years);
        return interest;
    }

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

    public static void printTable(int numRows, double balanceAmount, double interestRate)
    {
        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, balanceAmount, interestRate);
                balanceAmount = (balanceAmount + interestRate);
            }
    }

    public static void printIntro()
    {
        System.out.println("This program will calculate the interest "
                + "earned on a deposit over a certain amount of years.");
    }
}
import java.util.Scanner;
导入java.text.*;
公共阶级利益
{
公共静态void main(字符串[]args)
{
printIntro();
扫描仪输入=新扫描仪(System.in);
系统输出打印(“输入初始余额:”);
int balanceAmount=input.nextInt();
系统输出打印(“输入利率:”);
double interestRate=input.nextDouble();
System.out.print(“输入年份:”);
int years=input.nextInt();
打印表(年份、余额金额、利率);
}  
公共静态双利息(双倍余额、双倍利率、双倍年)
{
双倍利息=余额金额*数学功率((1+利率/100),年);
利息返还;
}
公共静态无效打印行(整数行、双倍余额金额、双倍利率)
{
System.out.println(rowNum+“\t”+余额金额+“\t”+“\t”+利息率+“\t”+“\t”+(余额金额+利息率));
//余额金额=(余额金额+利率);
}
公共静态无效打印表(整数、双倍余额、双倍利率)
{
System.out.println(“年度”+“\t”+“余额”+“\t”+“\t”+“利息”+“\t”+“新余额”);
System.out.println(“----”+“\t”+”----“+”\t”+“\t”+”----”+“\t”+“----”;

对于(inti=1;i您应该调用您的业务逻辑来根据您的业务需求计算利息。这完全取决于您的业务需求

尽管对于特定于程序的方法,您似乎需要在printTable方法中调用您的calcInterest方法,然后再调用printRow方法,如下所示:

public static void printTable( final int numRows, double balanceAmount, final double interestRate ) {
        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++ ) {
            double interest = calcInterest( balanceAmount, interestRate, 1 );
            printRow( i, balanceAmount, interest );
            balanceAmount = ( balanceAmount + interest );
        }
    }
它将发出如下信息:

public static void printTable( final int numRows, double balanceAmount, final double interestRate ) {
        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++ ) {
            double interest = calcInterest( balanceAmount, interestRate, 1 );
            printRow( i, balanceAmount, interest );
            balanceAmount = ( balanceAmount + interest );
        }
    }
该程序将计算一定年限内存款所赚取的利息

该程序将计算一定年限内存款所赚取的利息

输入初始余额:100
输入利率:10
输入年数:3
年度余额利息新余额
----    -------             --------                -----------
1   100.0                   10.000000000000014      110.00000000000001
2   110.00000000000001      23.100000000000037      133.10000000000005

3 133.100000000005 44.0561000000007 177.15610000000000012

您不是在呼叫calcInterest

在调用之前,需要在printRow方法下调用它

System.out.println(rowNum + "\t" + balanceAmount + "\t" + "\t" + interestRate + "\t" + "\t" + (balanceAmount + interestRate));

您根本没有调用
calcInterest
我不知道在哪里调用它,因为balanceAmount=balanceAmount+calcInterest(balanceAmount,interestRate,1);是的,但这是双倍余额和增加利息,而不是仅仅在余额中增加利息。因此,您计算利息的业务逻辑是错误的,您也需要对此进行研究。@robertleshi检查更新在我的回答中,您计算利息的公式是错误的。我修正了一些内容,但现在我有一个最后的问题,我要解决的是余额s增加10(在你的例子中是10),而不是使用新的balance@robertleshi参见打印表方法,您需要以下更正余额金额=(余额金额+利息);