扫描仪问题与数学文本和太多令牌

时间:2012-09-06 19:28:27

标签: java.util.scanner textinput

所以,我正在尝试制作一个基于java,基于文本的计算器,但扫描仪给我带来了一个令人头痛的问题。这是代码片段......

    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。+。cake(3,4,6,10 * 30 + sin(4))。*。3。"

扫描仪应该只标记空白,但这是我得到的: "。。1 +滤饼(。。。。。。。。。。。3,4,6,10 0.30 + SIN(4)) 0.3 "

由于某种原因,它删除了每个空格,但也分隔了标点符号的每个单词,数字和位! 现在我做了一些功课,并尝试使用input.useDelimiter(String in)的各种分隔符。 我使用的一些是:" \ s" " \ S +" " \ S *" " \ S * +" " []"还有更多但无济于事。我做错了什么!?!?!?!?!

1 个答案:

答案 0 :(得分: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());
             }
    }
}