我需要一种方法来返回对象的类型(作为字符串或对象的类,以较容易的方式)给定带有值的字符串。 我可以用我想要的每种类型解析它,但是存在与之相关的问题(例如,int也可以解析为long,float可以解析为double)。这是我的草图:
private String typeOf(String test) {
if (test == "true" || test == "false")
return "boolean";
else if (// its a number)
// figure out a way to parse all number types?
// return corresponding type
else
// can't be parsed with any boolean or number types... just a string
return "string";
}
我正在检查的类型是:String,long,int,short,byte,byte [],float和double。 请记住,我需要SPECIFIC类型才能完成此程序的make-or-break功能。任何帮助表示赞赏。
我正在尝试创建一个命名二进制标记(规范here),它包含用户输入(JOptionPane - 输入对话框)给出的特定类型的数据。为了制作正确类型的标签,我需要知道给定数据的类型。 (有没有办法从用户那里获得完全避免String问题的用户输入?)首先使用String作为我的问题的主要来源。
答案 0 :(得分:3)
启动字符串检查不正确。除此之外,请考虑不同的数据类型及其可能的值。
int或Integer的可能值都在long的范围内。 Floats和Doubles也是如此。您需要确定哪个数据类型的范围是其子集并按该顺序进行测试。作为一个例子,这里是一个快速的snippit,用于测试Integers和Longs。
private String typeOf(String suppliedTest) {
String test = suppliedTest.strip().toLower();
if (test.equals("true") || test.equals("false"))
return "boolean";
try {
int testInt = Integer.parseInt(test);
return "integer";
} catch (NumberFormatException e) {}
try {
long testLong = Long.parseLong(test);
return "long";
catch (NumberFormatException e) {}
...
}
答案 1 :(得分:0)
如果String
代表某种类型,您可以使用特定于类的解析方法来检查,例如
Double.parseDouble()
Integer.parseInt()
如果输入字符串不包含表示相应类型的值,则这些方法将抛出NumberFormatException
。
答案 2 :(得分:0)
你没有足够的不同来了解差异。您所能做的就是找到可以表示该数据的最小类型。 0
可以是String,long,int,short,byte,float或double。您需要确定哪个是最合适的响应。