Я пытаюсь выполнить расчет снежного кома за долгами - для тех, кто не знает - вы делаете минимальные платежи по всем кредитам из месяца в месяц. Как только вы окупитесь, вы берете этот минимальный платеж и добавляете его к следующему - так далее и т. Д. У меня есть каждый из моих сумм долга на do while loops, но мой экран становится черным, и я считаю, что он находится в бесконечном цикле. У меня есть 10 всего этого, но здесь несколько раз, чтобы показать, как это работает:while цикл не останавливается при выполнении критериев
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);
Каждая из переменных не инициализируются здесь извлекаются из sharedpreference ранее в деятельности. Получив его, он разбирается в double (при условии, что он не является нулевым).
try
{
amount2 = Double.parseDouble(debtAmount2);
}
catch (Exception e)
{
amount2 = 0;
}
Я также попытался петли, как
while (amount>0){
//do stuff
}
и что не получилось - тот же эффект.
Любые предложения о том, как заставить это не зацикливаться навсегда?
всех типов данных являются двойными (кроме tempTimeTaken это целый) - начальные значения изменяются - они вводятся в различной активности и проводили к этому с помощью sharedpref значения по умолчанию 0
добавить тип данных и начальные значения для rate1 количество1 количество2 и т.д. сделать программу полной, так что будет проще отлаживать –
видеть обновленные типы выше – jpgerb
Это работает, если '' rate' и newPmt' имеют разумные значения. Можете ли вы указать точные значения, которые вы использовали? Кроме того, вы можете попытаться выполнить шаги выполнения цикла цикла, а затем использовать 'logcat' для их проверки. По крайней мере, вы сможете подтвердить, что он работает бесконечно. –