2013-05-13 37 views
0

一切都在我的問題:) 我目前正在開發一個計算器,使用反向波蘭語法。 一切正常,除非StreamTokenizer遇到類似354a1b。我在這裏想要的是,StreamTokenizer把它看作一個詞,而不是一個數字後面跟一個詞。這裏是我的代碼:如何使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

有這樣的回答: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

...然後試圖通過解析您的雙打或者整形迭代結果。

希望它有幫助,雖然沒有明確的答案在這裏你的問題...

+0

非常感謝! 我很遺憾,很久以前,我在幾所學校的項目中面臨着壓力。 我已閱讀了這兩個主題,並意識到這個班有多糟糕^^ 這是一個嘗試使用它而不是掃描儀的錯誤,並且由於我的 工作在我的老師testSuite上進行了驗證,即使有上面​​詳述的錯誤,已決定放手^^ – 2013-05-21 13:09:29