java查找给定数字中的十进制数 1 月,4 周 Questions & Answers 1788 如何在java中找到给定数字中的小数点 我从用户那里得到输入,他可能会给出整数值或浮点值 我需要找到他输入的整数或浮点,有可能吗 如果是,请告诉我 -- 谢谢
# 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 楼答案 其他一些方法可以做到这一点: 给定 String input = ... 如果是十进制数,则以下计算结果为true input.split(".").length == 2 或 input.matches(".+\\..+") 或 !input.matches("\\d+")
# 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
# 1 楼答案
您不需要像某些答案所建议的那样显式搜索小数点的位置。只需将
String
解析为一个double,然后检查该double是否表示整数值。这样做的好处是可以应付双打的科学记数法;e、 g.“1E-10”,以及未能解析格式错误的输入;e、 g.“12.34.56”(而搜索“.”字符将无法检测到这一点)# 2 楼答案
其他一些方法可以做到这一点:
给定
如果是十进制数,则以下计算结果为true
或
或
# 3 楼答案
考虑到您的需要,我建议您使用^{} 进行数字解析,并使用其
hasNextXXX
方法,而不是处理parseInt
等和NumberFormatException
这张照片是:
# 4 楼答案
您可以尝试使用
yourNumberString.indexOf(".")
。如果它返回一个大于-1的数字,则在输入中有一个点# 5 楼答案
假设您得到了
String
中的数字,那么