Java-限制扫描程序输入

Java-限制扫描程序输入,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

我想知道扫描仪是否可以在双精度打印机上只接受一定长度的输入;也就是说,不允许输入超过一定数量的数字

我知道我可以用数学把地板弄圆,但我更感兴趣的是限制小数点后允许的位数

例如:

允许1点

2.22是允许的

10.99是允许的

100000000000.10是允许的

不允许使用1.999


在这些情况下,将数字作为字符串处理会有所帮助

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美分。