2012-09-06 65 views
1

所以,我想製作一個Java,基於文本的計算器,但掃描儀給我一個頭痛的地獄。下面是一個代碼snipit ...掃描儀與數學文本和太多令牌的問題

Scanner input=new Scanner(in); 
    while (input.hasNext()){ 
     System.out.print(input.next()+"."); 
    } 
    System.out.print("\n"); 

我的輸入是這樣的: 「1 +蛋糕(3,4,6,10 * 30 +罪(4))* 3」 和我的輸出應該是這樣的:「1.蛋糕(3,4,6,10 * 30 + sin(4))。*。3。」

掃描儀只應該標記空格,但這是我得到的: 「1。+。cake。(.3。,.4。,.10,..30。+ .sin。 (.4。)。)。 .3。「

由於某種原因,它刪除了每個空格,但也分隔標點符號的每一個單詞,數字和位! 現在我已經做了一些功課,並嘗試使用input.useDelimiter(String in)的各種分隔符。我使用的一些是:「\ s」「\ s +」「\ s *」「\ s * +」「[]」以及更多,但無濟於事。我究竟做錯了什麼!?!?!?!?!

+0

你試過了input.useDelimiter(「\\ s +」); //把這個放在正上方 –

+0

是的,input.useDelimiter(「XXXXX」);我使用的是那裏,其中XXXXX是我列出的每一個。由於某種原因,它刪除了我在前面的額外的斜線。我甚至通過我的輸入蜇印字符每行,以確保有沒有驚喜的字符... –

+0

你有沒有試過.. String [] tokens = in.split(「\\ s +」); –

回答

0

嘗試使用StringTokenizer代替。

public class demo 
{ 
    public static void main(String args[]) 
    { 
      StringTokenizer st = new StringTokenizer("1 + cake(3,4,6,10*30+sin(4)) * 3"); 
      while (st.hasMoreTokens()) 
      { 
       System.out.println(st.nextToken()); 
      } 
    } 
}