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