为什么我的 while 会进入无限循环?我如何解决它?

Why is my while going in a infinity loop? How do I fix it?

我不知道为什么我的 do while 一直在进行无穷大并且没有显示我的输出,应该是用户在系统中输入的金额应该是多少 quaters、dimes 等。

Scanner scan = new Scanner(System.in);

    System.out.println("Enter the amount of money: ");
    float dinero= scan.nextFloat();
    int quaters=0;
    int dimes =0;
    int nickle =0;
    int pennys =0;
    boolean b=false;
    do{
        if(dinero>=0.25){

            dinero=(float) (dinero-0.25);
            quaters++;

        }else if(dinero<0.25 && dinero>=0.10){

            dinero=(float) (dinero-0.10);
            dimes++;

        }else if(dinero<0.10 && dinero>=0.05){

            dinero=(float) (dinero-0.05);
            nickle++;

        }else if(dinero<0.05 && dinero<0){

            dinero=(float) (dinero-0.01);
            pennys++;
        }else{
            b=true;
        }


    }while(b==false);

    System.out.println("Quater :"+quaters);
    System.out.println("Dimes :"+dimes);
    System.out.println("Nickle :"+nickle);
    System.out.println("Pennys :"+pennys);

请帮助我知道这是一个愚蠢的问题,但我们会非常乐意提供帮助。

不确定您要做什么,但这是您的问题:最后一个 else 从未执行,因为您之前在 if 指令中涵盖了所有可能的情况。正因为如此, b 将永远是错误的,因此你的循环将永远持续下去。您究竟想在哪种情况下退出此循环?考虑一下,然后将最后一个else中的指令移动到相应的if块中。此外,之前的 if 也不正确。你的意思可能是:

if(dinero<0.5 && dinero>=0){
//do stuff
}

将 else if 语句的条件更改为

else if(dinero<0.05 && dinero>0)

我更正了,是我最后的条件不对。时间也错了

else if(dinero<0.05 && dinero>=0.01){

// was the the fix for the last else if         

while(dinero>0.01);
 // and here is the while