我目前正在开发一个计算简单利率和贷款月付款的计划。虽然,我遇到了一个非常大的问题。我试图使它成为我的主要值(参见代码)重新分配我的新余额的值(参见代码)。这是我现在的代码,我将在其下更详细地解释:
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循环会更好吗?
答案 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");
}