答案 0 :(得分:3)
我觉得StringTokenizer不可能,它太旧了。您可以使用扫描仪完成这项工作:
Scanner fi = new Scanner("string 200 200.0");
fi.useLocale(Locale.US);
while (fi.hasNext()) {
if (fi.hasNextInt()) {
System.out.println("Integer: " + fi.nextInt());
} else if (fi.hasNextDouble()) {
System.out.println("Double: " + fi.nextDouble());
} else {
System.out.println("String: " + fi.next());
}
}
课程的文档是here
答案 1 :(得分:0)
我会使用模数运算符:
if (yourNval % 1 > 0)
{
// nval is floating point.
}
else
{
// nval is an integer.
}
这是因为Java中的模works with floating point numbers以及整数。
更新:由于你指定需要用零值小数部分来区分整数和双精度,我认为你必须做类似以下的事情:
Double(yourNval).toString().indexOf('.');
因此,更完整的功能将如下所示:
if (yourNval % 1 > 0)
{
// nval is floating point.
}
else
{
// nval is an integer.
// Find number of trailing zeroes.
String doubleStr = Double(yourNval).toString();
int decimalLoc = doubleStr.indexOf('.');
int numTrailingZeroes = 0;
if (decimalLoc > 0)
{
numTrailingZeroes = doubleStr.length() - decimalLoc - 1;
}
}
答案 2 :(得分:0)