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

时间:2015-10-06 07:01:23

标签: java eclipse while-loop do-while negative-number

我不知道为什么我这样做是为了进行无限并且没有显示我的输出应该是多少quater,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);

请帮助我知道这是一个愚蠢的问题,但帮助会很多。

3 个答案:

答案 0 :(得分:2)

不确定你要做什么,但这是你的问题:最后的其他内容永远不会执行,因为你之前在if指令中涵盖了所有可能的情况。因此,b将永远是假的,因此你的循环将永远持续下去。你确切想要退出这个循环的条件是什么?考虑一下,然后将最后一个中的指令移动到相应的if块中。此外,之前的if也不正确。你可能意味着:

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

答案 1 :(得分:1)

将您的else if语句更改为

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

答案 2 :(得分:1)

我确定它是我的最后一个条件错了。同时也错了

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