如何在java中找到给定数字中的十进制(点)。
我从用户那里获得输入,他可能会给出整数或浮点值。
我需要找到他输入整数或浮点数,这可能吗?
如果是,请你告诉我。
- 感谢
答案 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+")