1

所以,我正在尝试制作一个基于文本的 Java 计算器,但扫描仪让我非常头疼。这是一个代码片段...

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

我的输入是这样的:“1 + cake(3,4,6,10*30+sin(4)) * 3”,我的输出应该是这样的:“1.+.cake(3,4,6,10* 30+sin(4)).*.3."

扫描仪应该只标记空白,但这就是我得到的:“1.+.cake.(.3.,.4.,.6.,. 10..30.+.sin.(.4.)。 ).. 3."

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

4

1 回答 1

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());
             }
    }
}
于 2012-09-07T08:29:06.660 回答