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

如何检查java中任何值的原始数据类型,java,Java,我有一个包含值列表的文件,这些值可能只是一个字符串或整数 bhushan 21 kedar 20 当我读取字符串数组中的值时,如果数据是整数或双精度的,我还想执行一些算术运算。如何检查我拥有的数据是整数、双精度还是字符串? 目前,我使用split函数将所有值存储在字符串数组中,每当我想对所有数字求平均值时,我都会将确定的数字转换为整数或双精度,然后执行算术运算。我想编写一个方法,告诉我该值的确切类型。您可以尝试将其从string转换为int try{ int result = Intege

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

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

您可以尝试将其从string转换为int

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

你可以用简单的函数来实现

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 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。

您通常会使用类似正则表达式的方法。e、 g

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

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

使用regex和convert to int或convert to int和catch numberformatException将其转换为整数并查看是否失败?使用正则表达式?您将在像bhushan这样的字符串值上获得NumberFormatException。您需要处理它,您可以存储Integer.parse中的值。我没有理解您。为什么要stroe?因为如果要将string=5作为int处理,必须在方法之后再次解析它。为了更好地执行,您可以尝试catch从解析中获取值。为什么一个动作要做两次?你是对的,但问题所有者只要求检查变量是否为int。是的,很抱歉,我以为问题是通过这种方式将字符串作为int进行操作,在我读了之后执行一些算术运算,我得到的不是这个12345的数字,但是12345不是没有数字吗?如果数据用引号括起来,那么它就是一个字符串。在概念上类似于认为它是一个字符串,^123456^是一个字符串。但是OP声明将所有值存储在一个字符串数组中,所以OP表示输入在quotesString中。因此,Hüseyin BABAL的答案将输入作为字符串,这是OP所需要的,尽管他的答案没有显示语法。检查12345应该会得到答案,它是一个整数。答案是12.345,是双精度的。bhusan 123应该给出答案,它是一根弦,是123456还是123456?数据是ASCII格式的文件,所以他像一个大字符串缓冲区一样读取数据,并将其存储在字符串数组中,因为这是通过字符串标记将数据存储在内存中的最简单方法。因此,如果文件中的数据实际上是\123456\,那么它不是一个数字。