-2

私は現在、ローンからの単純な金利と毎月の支払いを計算するプログラムに取り組んでいます。しかし、私は1つのかなり大きな問題に直面しています。私の主値(コードを参照)が新しい残高(コードを参照)の値に再割り当てされるようにしようとしています。これが今の私のコードです、私はその下でより詳細に説明します:

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を無視して、それをdoubleにキャストします。これは、皆さんに尋ねる前に最後にやろうとしたことだからです:)とにかく、最後の質問は、principalの値を自分に再割り当てするにはどうすればよいかということです。ニューバランス(nb)?また、副次的な質問ですが、この種のプログラムにはwhileループの方が適しているでしょうか。

4

2 に答える 2

1

nb = p + i --p; ???? コードを再確認する必要があるようです。forループはどの場所でも条件を変更しません。値が0より大きい場合は、常に無限ループに誘導されるか、ループにまったく入りません。 (np <1の場合)。したがって、実行時エラーがないかコードを確認してください。

于 2013-01-23T22:55:59.673 に答える
1

これはすでにコメントで述べられていますが、私が見ることができる最も差し迫った問題は

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

あなたの状態はnb > 0、そのループで決して変わることはありません。

これは2つのうちの1つを意味します

  • ループは実行されません
  • ループは終了しません(無限ループ)

計算方法nb(ニューバランス)で判断すると、ほとんどの場合0を超えることになり、ループが停止することはないと想定しています。

現在のところ、その部分が不明であるため、そのループで実際に何をしたいforのか、またはforループが必要なのかどうかは完全にはわかりません。


forループは何をすることになっていますか?

あなたが次のようなことをしようとしているように見えます

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

    System.out.println("insert output here");
}
于 2013-01-23T23:00:55.617 に答える