如何检查java中任何值的原始数据类型

时间:2014-02-21 13:26:23

标签: java

我有一个包含值列表的文件,这些值可能只是一个字符串或一个整数。

bhushan 21
kedar 20

当我读取字符串数组中的值时,如果我拥有的数据是整数或双精度,我也想执行一些算术运算。我如何检查我的数据是整数,双精度还是字符串? 我目前使用split函数将所有值存储在字符串数组中,每当我想取所有数字的平均值时,我将我确定的数字转换为整数或双精度然后执行算术运算。我想写一个方法,告诉我该值的类型究竟是什么。

4 个答案:

答案 0 :(得分:4)

使用正则表达式应该是最有效的方法。其他表达式可用于进一步查找浮点数等。

String input = "12345";
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(".*[^0-9].*");

if( pattern.matcher(input).matches() )
    System.out.println("Its a number");
else
    System.out.println("Its not a number");

您也可以使用Integer.parseInt()Double.parseDouble()方法,但如果输入不符合,则会抛出NumberFormatException

答案 1 :(得分:2)

你可以用简单的功能来做到这一点;

public static boolean isValueInteger(String s) {
    try { 
        Integer.parseInt(s); 
    } catch(NumberFormatException e) { 
        return false;//For example "bhushan" 
    }
    return true;// For example "21" 
}

如果是NumberFormatException

,它会抛出String

答案 2 :(得分:1)

您可以尝试将其从字符串转换为int。

try{
  int result = Integer.parseInt(stringValue);
} catch (NumberFormatException nfe) {
}

答案 3 :(得分:0)

你通常会使用类似正则表达式的东西。 e.g。

String number = "daaaa";
Pattern digitPattern = Pattern.compile("\\d{6}");       

if (digitPattern.matcher(number).matches()) {
   System.out.println(number + " is a number.");
}