while条件满足后循环不停止

时间:2013-11-10 05:24:36

标签: android while-loop 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);

此处未初始化的每个变量都是从活动中较早的共享首选项中检索的。收到后,它会被解析为double(假设它不为空)。

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

我也试过循环

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

这也不起作用 - 效果相同。

关于如何让它永远不循环的任何建议?

所有数据类型都是双精度数(tempTimeTaken除外) - 初始值不同 - 它们在不同的活动中输入,并通过sharedpref以默认值0传递给此

1 个答案:

答案 0 :(得分: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++;
}