为什么使用"while(amount> = 0)"会导致无限的while循环?

kin*_*ekx 0 java debugging infinite-loop while-loop

我正在研究一个应该采取整数并且将其分解的类,就好像它是变化的,例如四分之一,镍币和硬币.

如果我拥有它想要的理想方式,那就是让它继续计算不同的硬币,同时从金额中减去硬币的价值,直到金额为零,这应该结束循环.但由于某种原因,我正在经历一个无限循环.

while(amount >= 0){
    if(amount >= 25){
        quarters++;
        amount -= 25;
    }else if(amount >= 10){
        dimes++;
        amount -= 10;
    }else if(amount >= 5){
        nickels++;
        amount -= 5;
    }else if(amount >= 1){
        pennies++;
        amount--;
    }
}
Run Code Online (Sandbox Code Playgroud)

我甚至尝试在while循环结束时打印当前的金额值,看看我是否可以直观地看到可能导致问题的原因.它按照预期的方式工作,它变为零,但while循环不会停止,即使它应该.

现在我发现我可以通过改变它来避免这个问题,while(amount != 0)但我想知道为什么会while(amount >= 0)在这里造成无限循环?

Ell*_*sch 7

改变这个,

while(amount >= 0){
Run Code Online (Sandbox Code Playgroud)

while(amount > 0){
Run Code Online (Sandbox Code Playgroud)

或者如果金额为0,它将继续循环.