在for循环中将值重新赋值为double

时间:2013-01-23 22:45:49

标签: java

我目前正在开发一个计算简单利率和贷款月付款的计划。虽然,我遇到了一个非常大的问题。我试图使它成为我的主要值(参见代码)重新分配我的新余额的值(参见代码)。这是我现在的代码,我将在其下更详细地解释:

import java.util.Scanner;


 public class Payments {

public static double principal;       //principal
public static double annualrate;     //annual interest rate
public static double p;             //monthly payment
public static double mr;           //monthly interest rate
public static double nb;          //new balance after monthly payments
public static double i;          //interest (monthly)
public static String spaces = "           "; //spaces for making clean columns
public static int months = 12;

public static void main(String[] args){

    Scanner input = new Scanner(System.in);

    System.out.println("Principal: $");
    principal  = input.nextDouble();

    System.out.println("Anual Interest Rate: ");
    annualrate = input.nextDouble();

    System.out.println("Monthly Payment: $");
    p = input.nextDouble();


    calculate();

}

public static void calculate() {
    mr = annualrate / 12;
    i = mr * p;
    nb = principal + i - p;





    System.out.print("Month     Principal Amt.        Interest       Payment         New Balance");
    System.out.println();
    System.out.println();

    for(int x = 1; nb > 0; nb = principal + i - p){

        System.out.println(x + spaces + p + spaces + i + "%" + spaces + "$"           + p + spaces + "$" + nb);
             p = (Double)null;
             p = nb;

         }

     }
 }

因此,您很可能会通过代码中的注释看到所有变量。现在,忽略null并将其转换为双倍,因为这是我在问你们之前尝试做的最后一件事:)不管怎样,我的最后一个问题是,我怎样才能重新将主体的价值分配给我新余额(nb)?另外,一个附带问题,对于这种程序来说,while循环会更好吗?

2 个答案:

答案 0 :(得分:1)

nb = p + i - p; ????看起来你需要仔细检查你的代码.. for循环不会改变任何地方的条件..如果值大于0,你将总是将它引向无限循环,或者它永远不会进入循环(如果np <1)。所以请检查运行时错误的代码..

答案 1 :(得分:1)

评论中已经说过,但我能看到的最直接的问题是

for(int x = 1; nb > 0; x++){

你的情况,nb > 0永远不会在那个循环中改变。

这意味着2件事中的一件

  • 你的循环不会执行
  • 你的循环不会退出(无限循环)

判断你如何计算nb(新平衡)我假设它大部分时间都会超过0,并且你的循环永远不会停止。

现在的情况是,我不完全确定你在for循环中实际想要做什么,或者你是否甚至想要一个for循环,因为那部分不清楚。


for循环应该做什么?

看起来你似乎正在尝试做类似

的事情
for (int x = 1; principal > 0; x++)
{
    principal += principal * monthlyInterestRate;
    principal -= payment;

    System.out.println("insert output here");
}