有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java查找给定数字中的十进制数

如何在java中找到给定数字中的小数点

我从用户那里得到输入,他可能会给出整数值或浮点值

我需要找到他输入的整数或浮点,有可能吗

如果是,请告诉我

-- 谢谢


共 (5) 个答案

  1. # 1 楼答案

    您不需要像某些答案所建议的那样显式搜索小数点的位置。只需将String解析为一个double,然后检查该double是否表示整数值。这样做的好处是可以应付双打的科学记数法;e、 g.“1E-10”,以及未能解析格式错误的输入;e、 g.“12.34.56”(而搜索“.”字符将无法检测到这一点)

    String s = ...
    Double d = new Double(s);
    int i = d.intValue();
    
    if (i != d) {
      System.err.println("User entered a real number.");
    } else {
      System.err.println("User entered an integer.");
    }
    
  2. # 2 楼答案

    其他一些方法可以做到这一点:

    给定

    String input = ...
    

    如果是十进制数,则以下计算结果为true

    input.split(".").length == 2
    

    input.matches(".+\\..+")
    

    !input.matches("\\d+")
    
  3. # 3 楼答案

    考虑到您的需要,我建议您使用^{}进行数字解析,并使用其hasNextXXX方法,而不是处理parseInt等和NumberFormatException

        import java.util.*;
    
        String[] inputs = {
            "1",
            "100000000000000",
            "123.45",
            "blah",
            "  "
        };
        for (String input : inputs) {
            Scanner sc = new Scanner(input);
            if (sc.hasNextInt()) {
                int i = sc.nextInt();
                System.out.println("(int) " + i);
            } else if (sc.hasNextLong()) {
                long ll = sc.nextLong();
                System.out.println("(long) " + ll);
            } else if (sc.hasNextDouble()) {
                double d = sc.nextDouble();
                System.out.println("(double) " + d);
            } else if (sc.hasNext()) {
                System.out.println("(string) " + sc.next());
            }
        }
    

    这张照片是:

    (int) 1
    (long) 100000000000000
    (double) 123.45
    (string) blah
    
  4. # 4 楼答案

    您可以尝试使用yourNumberString.indexOf(".")。如果它返回一个大于-1的数字,则在输入中有一个点

  5. # 5 楼答案

    假设您得到了String中的数字,那么

    String number = ...;
    if (number.indexOf('.') > -1)
      ...