Java 在百分比和计算利息方面有困难

Java 在百分比和计算利息方面有困难,java,Java,包括一个额外的用户输入,即每年增加额外贡献的百分比。例如,假设用户希望在第一年贡献1000美元,每年增加2%。在第1年年底,账户将增加1000美元。到第二年年底,额外的金额将增长2%,因此账户将增加1020美元。在第三年年底,额外的金额又增加了2%,因此账户中会增加1040.40美元,以此类推。 我的附加代码有问题,有人能帮我吗 import java.util.Scanner; public class GettingRichSlowly { public static void m

包括一个额外的用户输入,即每年增加额外贡献的百分比。例如,假设用户希望在第一年贡献1000美元,每年增加2%。在第1年年底,账户将增加1000美元。到第二年年底,额外的金额将增长2%,因此账户将增加1020美元。在第三年年底,额外的金额又增加了2%,因此账户中会增加1040.40美元,以此类推。 我的附加代码有问题,有人能帮我吗

import java.util.Scanner;

public class GettingRichSlowly {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        // Get user input for initial deposit, annual interest rate,
        //  number of years, amount of yearly extra contribution
        System.out.println("Enter initial deposit: ");
        double initialDeposit = scnr.nextDouble();
        System.out.println("Enter annual interest rate (as a percentage): ");
        double interestRate = scnr.nextDouble();
        System.out.println("Enter number of years: ");
        int years = scnr.nextInt();
        System.out.println("How much extra would you like to contribute at the end of each year? ");
        double extraAmount = scnr.nextDouble();
        System.out.println("How much should the annual contribution increase each year (as a percentage)?");
        double annualIncrease = scnr.nextDouble();
        annualIncrease = annualIncrease / 100 + 1;

        // Amount in the account at the beginning of the current year
        double yearStart = initialDeposit;

        // Repeat years number of times
        int i = 1;
        while (i <= years) {
            // Dollar amount of interest earned during the current year
            double interest = yearStart * interestRate / 100;

            if (i == 1) {
            double yearEnd = yearStart + interest + extraAmount;
            }
            else {
                 extraAmount = extraAmount * annualIncrease;
                double yearEnd = yearStart + interest + extraAmount;
            }

            // Show the results for the current year
            System.out.format("%3d\t$%12.2f\t$%12.2f\t$%12.2f\t$%12.2f\n", i, yearStart, interest, extraAmount, yearEnd);

            // Update yearStart for the following year
            yearStart = yearEnd;

            i++;
        }
    }
}
import java.util.Scanner;
公共课慢慢致富{
公共静态void main(字符串[]args){
扫描仪scnr=新扫描仪(System.in);
//获取用户输入的初始存款、年利率、,
//年数,每年额外供款金额
System.out.println(“输入初始存款:”);
double initialDeposit=scnr.nextDouble();
System.out.println(“输入年利率(百分比):”;
双酯=scnr.nextDouble();
System.out.println(“输入年份:”);
int years=scnr.nextInt();
System.out.println(“您希望在每年年底额外贡献多少?”);
加倍额外金额=序号nextDouble();
System.out.println(“每年的年度供款应增加多少(百分比)?”;
双年率增量=scnr.nextDouble();
年增长率=年增长率/100+1;
//本年年初账户中的金额
两年开始=初始存款;
//重复数年
int i=1;
而(i你必须在身体之外申报“双年终”

       double yearEnd;
        if (i == 1) {
            yearEnd = yearStart + interest + extraAmount;
        }
        else {
            extraAmount = extraAmount * annualIncrease;
            yearEnd = yearStart + interest + extraAmount;
        }

        // Show the results for the current year
        System.out.format("%3d\t$%12.2f\t$%12.2f\t$%12.2f\t$%12.2f\n", i, yearStart, interest, extraAmount, yearEnd);

顺便说一句,在你需要钱的地方,千万不要用
double
/
double
float
。只使用
BigDecimal
或整数。或者用
long
表示美分。我看不出有什么不对的地方-你期望什么?请出示数字,你认为第二年有兴趣吗?例如。利息5[%]初始存款1000[e.g.$]额外金额500[e.g.$]年度增加2[%]您期望得到什么以及您得到什么?if(i==1)
语句中的主体在
else
子句中重复。如果(i!=1){extramount=extramount*annualIncrease;},此if-else可以重写为
if(i!=1){extramount=extramount*annualIncrease;}double yearEnd=yearStart+interest+extraAmount;
。谢谢!当我输入这个时,它给了我一个错误:GettingRichSlowly。java:2:class、interface或enum expected模拟支付利息的帐户中的资金增长。你知道这意味着什么吗?这是你的整个程序还是你在其他程序中使用GettingRichSlowly类?