Цикл не останавливается, когда критерии удовлетворены

Я пытаюсь сделать снежный ком для долга - для тех, кто не знает - вы делаете минимальные платежи по всем кредитам из месяца в месяц. Как только один из них выплачен, вы берете этот минимальный платеж и добавляете его к следующему - и так далее, и так далее. У меня есть все суммы моего долга в цикле do while, но мой экран становится черным, и я считаю, что он находится в бесконечном цикле. У меня их всего 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);

Каждая из переменных, не инициализированных здесь, извлекается из общего предпочтения ранее в упражнении. После получения он анализируется на двойное значение (при условии, что оно не равно нулю).

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

Я также пробовал петли как

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

и это тоже не сработало - тот же эффект.

Любые предложения о том, как заставить это не зацикливаться вечно?

все типы данных двойные (кроме tempTimeTaken is int) - начальные значения различаются - они вводятся в другое действие и переносятся в него через sharedpref со значением по умолчанию 0

1 ответ

Решение

Обычно формат цикла while

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

в вашей петле

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

Вы присваиваете новое значение счетчику цикла t ot al1 и увеличиваете tempTimeTaken. Выведите значение amount1 в этом цикле, проверьте, становится ли оно отрицательным в какой-то момент времени, например.

while(amount1>0){
    amount1 = (amount1 * rate1) - newPmt;
    Log.d("loop","Value of amount1 :"+amount1);
    tempTimeTaken++;
}
Другие вопросы по тегам