1

我正在尝试解决一个问题,即我尝试让我的循环在每个循环之后取一个新值。该程序假设我的利息支付罚款,本金支付当前余额,这样做我的利息假设每次循环时都会减少,但它只会循环第一个答案超过

这是第一个答案是正确的输出,但其他三个是

    Enter Loan Amount:500
    Enter Annual Interest:50
    Total payment:4
    Enter Loan Length :1
    Interest PaymentPrincipal PaymentCurrent Balance
    Interest Payment Principal Payment Current Balance 62.5
    62.5
    62.5
    62.5

它应该是第一次付款后余额的 12.5%。

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //variabled decleared
        double rate;
        double payment;
        int amt = 1;
       //input
       System.out.print("Enter Loan Amount:");
        double principal = input.nextDouble();
        System.out.print("Enter Annual Interest:");
        double interest = input.nextDouble();
        System.out.print("Total payment:");//12=monthly,4= quartely,2=semi-annually and 1=annually
        double period = input.nextDouble();
        System.out.print("Enter Loan Length :");
        int length = input.nextInt();

        //proces
        rate = interest / 100;
        double period_rate = rate / period;
          double n = period * length;
        payment = (principal*Math.pow((1+period_rate),n))/n;





        System.out.printf("\n"+"Interest Payment"+"     Principal Payment       "+"         Current Balance     ");

        for(int i=1; i<=n; i++){
        double principal_payment=0;
        double current_balance;
        double payment_interest;

        current_balance=(principal-principal_payment);
         payment_interest=(principal*period_rate);
        principal_payment=(payment-payment_interest);
        principal=current_balance;



         System.out.println(payment_interest+"");

         }
4

3 回答 3

1

您为 for 的所有迭代赋予相同的值。这就是为什么你总是得到相同的输出。

如果您每次都想要新值,您可以提示用户为每次迭代提供新的输入。或者您在 for 之前执行此操作,将输入存储在数组中并在循环内处理它们。

像这样的伪代码:

for(i = 0; i < N; i++)
{
    //read principal from user input
    //read payment from user input
    // ect...
    payment_interest=(principal*period_rate);
    ...


}

你可以在这里看到如何从键盘读取双精度。请注意,在循环内部,您只需要向用户询问可以变化的参数。

于 2012-11-27T18:09:19.587 回答
1

忘记编程。拿铅笔和纸,用几个月的时间计算。然后将这些计算转移到代码中。当您在了解问题所在之前开始编码时,您就会超越自己。

于 2012-11-27T18:19:24.617 回答
0

换行试试:

本金=当前余额;

至:

本金=本金-本金付款;

或将循环更改为:

double current_balance = principal;
    for (int i = 1; i <= n; i++)
    {
        double principal_payment = 0;

        double payment_interest;

        //current_balance = (principal - principal_payment);
        payment_interest = (current_balance * period_rate);
        principal_payment = (payment - payment_interest);
        current_balance = current_balance - principal_payment;



        System.out.println(payment_interest + "");

    }
于 2012-11-27T18:36:27.860 回答