一切都在我的问题:)
我目前正在开发一种使用反向波兰表示法的计算器。
除非StreamTokenizer
遇到类似354a
或1b
的内容,否则一切正常。我想要的是StreamTokenizer
将其视为单词而不是单词后跟单词。这是我的代码:
sT = new StreamTokenizer(f);
sT.resetSyntax();
sT.eolIsSignificant(false);
sT.wordChars('a', 'z');
sT.wordChars('A', 'Z');
sT.whitespaceChars(32, 32);
sT.parseNumbers();
while (sT.ttype != StreamTokenizer.TT_EOF){
int ttype = sT.ttype;
if (ttype == StreamTokenizer.TT_NUMBER) {
calc.empile(sT.nval);
}
else{
if (!calc.stack.isEmpty()) {
switch (ttype) {
case '+':
calc.plus();
break;
case '-':
calc.moins();
break;
case '*':
calc.mult();
break;
case '/':
calc.div();
break;
}
}
}
sT.nextToken();
}
答案 0 :(得分:0)
答案是:StreamTokenizer splits up 001_to_003 into two tokens; how can I prevent it from doing so?
但我认为你可以这样做:How do I sidestep TT_NUMBER from StreamTokenizer
...然后尝试通过迭代结果来解析你的双打或整数。
希望它有所帮助,尽管这里的问题没有明确答案......