2016-10-20 4 views
-2

私はJavaのループを持っています。これは配列の値を計算して各インデックスに入れることを意図しています。ここでJavaのループで期待通りに動作しません。誰かが私を助けることができますか?

は私が持っているものである:ここでは

for(int i = 15; i <= 30; i += 5){ 
     double rate = 0.03; 
     int index = 0; 

     payments[index] = LoanCalculator(initLoan, rate, i*12); 

     index++; 

    } 

    System.out.println(); 
    System.out.printf("%-2.1f%c", 3.0, percent); 
    System.out.printf("%13.2f %9.2f %9.2f %9.2f", payments[0], payments[1], payments[2], payments[3]); 
    } 

は、それを出力するものである(注:出力の上部を出力し、他のコードがあります):

Years:  15  20  25  30 
__________________________________________________ 
3.0%  421.60  0.00  0.00  0.00 

明らかにあり私は正確に同じパラメータを以前に渡して正しい値を返していたので、実際にどこかに数学的なエラーがありました。

私が懸念しているのは、最後の3つのインデックスに値が配置されていないということです。誰も私がここで間違って何を説明することができますか?

P.S.ここに私が使用しているLoanCalculatorメソッドがあります:

public static double LoanCalculator(double loan, double rate, int payments) 
{ 
    double r = rate/12; 
    double monPay = (loan * r * Math.pow(1+r, payments))/((Math.pow(1+r, payments))-1); 
    return monPay; 
} 

助けていただければ幸いです。

答えて

0

このコードあなたforループ内

for(int i = 15; i <= 30; i += 5){ 
    double rate = 0.03; 
    int index = 0; 

あなたがゼロにindexたび

を再設定しているので

index++; 

の効果を

移動を無効になり検討しますあなたの0123の前にインデックスの宣言ループ

double rate = 0.03; 
int index = 0; 
for(int i = 15; i <= 30; i += 5){ 
    payments[index++] = LoanCalculator(initLoan, rate, i*12); 
} 
+0

* facepalm *何かばかしい間違い... – jakivey32

+0

ありがとうございました!このような小さなエラーのために、このような長い投稿をして申し訳ありません! – jakivey32

+0

クール、upvotingを検討してください/またはこの回答を受け入れる –

1

あなたがループ内であなたのindex 0に設定されています。したがって、最初のアイテムだけが割り当てられます。

あなたはおそらく必要があります。

int index = 0; 
for (int year = 15; year <= 30; year += 5) { 
    payments[index++] = calculateLoan(initLoan, rate, year * 12); 
} 

以上(私の意見で):

for (int i = 0; i < payments.length; i++) { 
    int year = i * 15; 
    int month = year * 12; 
    payments[i] = calcualteLoan(initLoan, rate, month); 
} 
+0

私は、コードの2番目のブロックがはるかに優れていることに同意します。しかし、1年/月が0になるのを避けるために、1でループを開始する必要はありませんか?また、お支払い[i-1]と同様に、 – jakivey32

+0

i = payments.lengthにすることはできますか? – jakivey32

0

あなたのforループで0にindexを設定します。これにより、呼び出すたびにループがインデックスにリセットされます。これを修正する方法は、ループの上にインデックスをインスタンス化し、ループ内でインクリメントすることです。

関連する問題