0

私は借金の雪だるま式の計算をしようとしています-知らない人のために-あなたは毎月すべてのローンで最低の支払いをします. 支払いが終わったら、その最低支払い額を次の支払いに追加します。これを繰り返します。ループ中に債務額をそれぞれ処理していますが、画面が真っ暗になり、無限ループになっていると思います。全部で 10 個ありますが、どのように機能するかを示すためにいくつかを以下に示します。

    int tempTimeTaken=0;
    double newPmt = payment1 + aAmt;

    while(amount1>0){
        amount1 = (amount1 * rate1) - newPmt;
        tempTimeTaken++;
    }

    newPmt = newPmt + payment2;
    for (int i=0;i<tempTimeTaken;i++)
    {
        if(amount2>0){
        amount2 = (amount2 * rate2) - payment2;
        }
    }
    do{
        if (amount2>0){
        amount2 = (amount2 * rate2) - newPmt;
        tempTimeTaken++;}
    }while(amount2>0);

ここで初期化されていない各変数は、アクティビティの早い段階で共有設定から取得されます。受信すると、double に解析されます (null ではないことを前提としています)。

    try
    {
        amount2 = Double.parseDouble(debtAmount2);
    }
    catch ( Exception e )
    {
        amount2 = 0;
    }

私もループを試しました

while (amount>0){
//do stuff
}

それもうまくいきませんでした - 同じ効果。

これを永久にループしないようにする方法について何か提案はありますか?

すべてのデータ型は double です (tempTimeTaken が int を除く) - 初期値は異なります - それらは別のアクティビティに入力され、デフォルト 0 の sharedpref を介してこのアクティビティに運ばれます

4

1 に答える 1

1

通常、while ループの形式は次のとおりです。

while(check condition against loop counter){
     //do your things
     increment/ decrement loop counter
}

あなたのループで

 while(amount1>0){
     amount1 = (amount1 * rate1) - newPmt;
     tempTimeTaken++;
 }

ループ カウンター amount1 に新しい値を割り当て、tempTimeTaken をインクリメントします。このループで amount1 の値を出力し、ある時点で負になるかどうかを確認します。

while(amount1>0){
    amount1 = (amount1 * rate1) - newPmt;
    Log.d("loop","Value of amount1 :"+amount1);
    tempTimeTaken++;
}
于 2013-11-11T04:53:37.067 に答える