有没有办法找到解析的值,并返回java.io.StreamTokenizer。 nval(例如200
)是一个整数还是浮点数?java.io.StreamTokenizer.TT_NUMBER:浮点型还是整型?
感谢
编辑:
我希望能够知道,如果输入的是 '200' 或 '200.0'。
有没有办法找到解析的值,并返回java.io.StreamTokenizer。 nval(例如200
)是一个整数还是浮点数?java.io.StreamTokenizer.TT_NUMBER:浮点型还是整型?
感谢
编辑:
我希望能够知道,如果输入的是 '200' 或 '200.0'。
我不认为这是可能的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
我会使用模运算符:
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;
}
}
谢谢您anwser,但是这并没有告诉我,如果输入的是“200.0”或“200”。 – Pierre 2009-07-27 12:11:42
我已经添加了上面的代码来确定整数`nval`输入包含的尾随零的数量。你的例子`200.0`将导致`numTrailingZeroes`的值为`1`。 – 2009-07-27 12:55:34