2010-05-21 22 views
2

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

我得到来自用户的输入,他可能会给整数或浮点值。

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

如果可以,请告诉我。

- 感谢

+0

获得来自用户的输入 - 通过GUI或从一个文本文件,这是? – Mark 2010-05-21 11:14:38

+0

这是功课吗? – ponzao 2010-05-21 11:33:44

回答

5

假设你得到了号码数字在String,这将是

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

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

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."); 
} 
+0

即使输入是整数,您的int在很多情况下也不会等于Double。浮点不是那么精确。您需要将int转换回Double并检查是否接近(在1.0e-6之内)。 – 2010-05-22 00:11:41

1

预见你的需要,我会建议你使用java.util.Scanner的数字分析,并使用,而不是处理parseInt等其hasNextXXX方法和处理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 
0

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

给出

String input = ... 

以下的计算结果为真,如果它是一个十进制数

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

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

相关问题