为什么我的 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
我不知道为什么我的 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