有沒有辦法找到解析的值,並返回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