gpt4 book ai didi

java - StreamTokenizer 不将 + 视为单词

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:19 25 4
gpt4 key购买 nike

在代码中

switch(token){

case StreamTokenizer.TT_EOF:
eof = true;
break;
case StreamTokenizer.TT_NUMBER:
double value = tokenizer.nval;
operands.add(value);
break;
case StreamTokenizer.TT_WORD:
operate(tokenizer.sval);
break;
default:
throw new WrongPhraseException("Unnexpected operator or operand: " + tokenizer.sval +".");
}

我给出输入 RPN,例如:5 4 3 + *

为什么+不被视为TT_WORD,它不被视为它所以它抛出异常。

最佳答案

来自StreamTokenizer文档:

For a single character token, its value is the single character, converted to an integer.

由于您的 + 字符是单个字符,因此可能会被视为 TT_NUMBER;您的 TT_NUMBER 案例陈述也需要处理这些案例。我认为这同样适用于未加引号的 * 字符。因此你可以尝试这样的事情:

case StreamTokenizer.TT_NUMBER:
Double value = new Double(tokenizer.nval);

if (Character.isDigit(value.intValue()) {
operands.add(value.doubleValue());

} else {
// Possibly dealing with operator here. The hard/fun part is
// in coercing that double value back to its tokenized string
// form.
operate(new Character((char) tokenizer.nval).toString());
}

break;

希望这有帮助!

关于java - StreamTokenizer 不将 + 视为单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com