获取输入然后转换为适当的数据类型 - Java

时间:2015-04-03 17:50:18

标签: java

我正在尝试创建一个方法,从用户接收任何数据类型的输入,然后将该输入转换为变量类型。但我的代码总是返回字符串类型。需要修改吗?

Scanner x = new Scanner(System.in);
Object a = x.next();

这是我检测对象类型的方法

public static String inputValidator(Object input)
{
    if(input.getClass().getName().equals("java.lang.String"))
    {
        return "string";
    }
    else if(input.getClass().getName().equals("java.lang.Integer"))
    {
        return "integer";
    }
    return "nor";


}

1 个答案:

答案 0 :(得分:3)

Scanner.next()返回String以来,这不是正确的方法。如果你正在寻找原始或一些基本的'然后,您可以使用nextByte()nextBigDecimal()等适当的方法。

即。根据您当前的实施情况,您将无法访问else if检查Integer的区块。

如果您对数字最感兴趣请检查: How to check if a String is numeric in Java

  

让我们说String,int和double

如果性能不是那么大的问题而你正在寻找一个简单的解决方案,那么我建议你选择:

if (isInteger(string)) {
    // is an integer
} else if (isDouble(string)) {
    // is a double 
} else {
    // is a string
}

public static boolean isDouble(String string) {
    try {
        double d = Double.parseDouble(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

public static boolean isInteger(String string) {
    try {
        double d = Integer.parseInt(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

注意:调用顺序在这里很重要,你必须在isDouble()之前调用isInteger(),因为整数字符串也是一个双字符串。