我正在尝试创建一个方法,从用户接收任何数据类型的输入,然后将该输入转换为变量类型。但我的代码总是返回字符串类型。需要修改吗?
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";
}
答案 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(),因为整数字符串也是一个双字符串。