Java-限制扫描程序输入
我想知道扫描仪是否可以在双精度打印机上只接受一定长度的输入;也就是说,不允许输入超过一定数量的数字 我知道我可以用数学把地板弄圆,但我更感兴趣的是限制小数点后允许的位数 例如: 允许1点 2.22是允许的 10.99是允许的 100000000000.10是允许的 不允许使用1.999Java-限制扫描程序输入,java,double,java.util.scanner,user-input,Java,Double,Java.util.scanner,User Input,我想知道扫描仪是否可以在双精度打印机上只接受一定长度的输入;也就是说,不允许输入超过一定数量的数字 我知道我可以用数学把地板弄圆,但我更感兴趣的是限制小数点后允许的位数 例如: 允许1点 2.22是允许的 10.99是允许的 100000000000.10是允许的 不允许使用1.999 在这些情况下,将数字作为字符串处理会有所帮助 public static boolean hasLessThanTwoDecimalDigits(double number) { return Strin
在这些情况下,将数字作为字符串处理会有所帮助
public static boolean hasLessThanTwoDecimalDigits(double number)
{
return String.valueOf(number).matches("\\d+\\.\\d\\d?");
}
其中:
表示一位到无限位之间的数字\\d+
代表点\\.
代表数字\\d
代表零或一位数字\\d?
- 一种方法是:
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
int integerPlaces = input.indexOf('.');
int decimalPlaces = input.length() - integerPlaces - 1;
if (decimalPlaces > 2) {
System.out.println(input + " is not allowed");
} else {
System.out.println(input + " is allowed");
}
在integerPlaces
中,您得到
所在的索引,然后在decimalPlaces
中,您得到
之后的小数位数
接下来,您只需检查小数位数是否大于2并输出它
这是如果你想马上测试的话,
我现在得到的结果是:
1.00
1.00 is allowed
2.22
2.22 is allowed
10.99
10.99 is allowed
1000000000000.10
1000000000000.10 is allowed
1.999
1.999 is not allowed
如果用户键入“不允许”的内容,会发生什么情况?这与您编写代码来检测相同的情况有什么不同?我试图看看是否有一种方法可以做到这一点,这样我就不需要写检查来确保他们以“正确”的方式进行操作;这是模拟某人给一美元36美分或其他东西。1.36. 不是一美元36.7798美分。