找到给定数字的小数

时间:2010-05-21 11:08:25

标签: java

如何在java中找到给定数字中的十进制(点)。

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

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

如果是,请你告诉我。

- 感谢

5 个答案:

答案 0 :(得分:5)

假设你在String中得到了数字的数字,那就是

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您不需要像某些答案所示明确搜索小数点的位置。只需将String解析为double,然后检查该double是否表示整数值。这有利于对双打应对科学记数法;例如“1E-10”,以及未能解析格式错误的输入;例如“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.");
}

答案 3 :(得分:1)

预计您的需求,我建议您使用java.util.Scanner进行号码解析,并使用其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 :(得分:0)

其他一些方法:

给定的

String input = ...

如果它是十进制数

,则以下评估为真
input.split(".").length == 2

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

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