Java Eclipse中,我不断减去while循环值,结果它赢了';I don’我不能给我正确的答案
因此,我试图在我的程序中包含一个美元测试,检查用户输入的值是否是可能的美元金额。在while循环中,我在减去0.01时遇到了问题。这个想法是,如果他们输入一个小数点后3位的值,比如2.345,它将捕获该值,并使输入成为一个有效的数字。有人对如何解决这个问题有什么建议吗Java Eclipse中,我不断减去while循环值,结果它赢了';I don’我不能给我正确的答案,java,eclipse,if-statement,input,while-loop,Java,Eclipse,If Statement,Input,While Loop,因此,我试图在我的程序中包含一个美元测试,检查用户输入的值是否是可能的美元金额。在while循环中,我在减去0.01时遇到了问题。这个想法是,如果他们输入一个小数点后3位的值,比如2.345,它将捕获该值,并使输入成为一个有效的数字。有人对如何解决这个问题有什么建议吗 Scanner input = new Scanner(System.in); double dollar = 0; System.out.print("Please enter a dollar amount: ")
Scanner input = new Scanner(System.in);
double dollar = 0;
System.out.print("Please enter a dollar amount: ");
dollar = input.nextDouble();
while (dollar != 0){
dollar -= .01;
if (dollar < 0)
{System.out.print("Please enter a valid dollar amount: ");
dollar = input.nextDouble();
}
System.out.println(dollar);
}
}
扫描仪输入=新扫描仪(System.in);
双美元=0;
System.out.print(“请输入美元金额:”);
美元=输入.nextDouble();
而(美元!=0){
美元-=.01;
如果(美元<0)
{System.out.print(“请输入有效的美元金额:”);
美元=输入.nextDouble();
}
系统输出打印单位(美元);
}
}
我已经用while循环结构中的验证更新了您的代码块。
只有满足以下所有条件时,此循环才会中断
- 用户输入>0.01$
- 用户输入为正值
- 用户输入只有两个十进制值
import java.util.Scanner;
public class Testing {
public static void main(String args[])
{
Scanner input = new Scanner(System.in);
double dollar = 0;
System.out.print("Please enter a dollar amount: ");
dollar = input.nextDouble();
System.out.println("Your value :" + dollar);
String text = Double.toString(Math.abs(dollar));
int integerPlaces = text.indexOf('.');
int decimalPlaces = text.length() - integerPlaces - 1;
dollar -= .01;
while (dollar == 0 | dollar < 0 | decimalPlaces>3){
System.out.print("Please enter a valid dollar amount: ");
dollar = input.nextDouble();
System.out.println(dollar);
text = Double.toString(Math.abs(dollar));
integerPlaces = text.indexOf('.');
decimalPlaces = text.length() - integerPlaces - 1;
dollar -= .01;
}
}
}
import java.util.Scanner;
公共类测试{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(System.in);
双美元=0;
System.out.print(“请输入美元金额:”);
美元=输入.nextDouble();
System.out.println(“您的价值:+美元”);
字符串文本=Double.toString(Math.abs(美元));
int integerPlaces=text.indexOf('.');
int decimalPlaces=text.length()-integerPlaces-1;
美元-=.01;
而(美元=0 |美元<0 |小数位数>3){
System.out.print(“请输入有效的美元金额:”);
美元=输入.nextDouble();
系统输出打印单位(美元);
text=Double.toString(Math.abs(美元));
integerPlaces=text.indexOf('.');
decimalPlaces=text.length()-integerPlaces-1;
美元-=.01;
}
}
}
我明白你的意思,但是如果用户输入50.991呢?我想弄清楚的是,他是否输入了很多小数位。在while condition&cross check decimal digits中进行另一个检查你可以使用'toString().length()`,这个链接也可能有帮助-->