java Tokenizer slip

时间:2011-04-12 20:11:02

标签: java split

我想将String行标记为令牌(存入String表),我只能使用java.io. * 这是实现计算器。

例如: 第一行:1 + 2 + 3 第二行:1 + 2 * 3(这一个在令牌之间有空格)

进入表格{“1”,“+”,“2”,“+”,“3”}

我想过拆分任何想法?

4 个答案:

答案 0 :(得分:2)

提示:使用java.io.StreamTokenizer

答案 1 :(得分:1)

除了manji所说的,如果你真的想要实现一个计算器,你需要在你的令牌被标记后解析

例如,如果你有表达式:

  

1 + 2 + 3 *(4 + 5)

您需要创建抽象语法树,以便正确评估表达式。

仅靠正则表达式还不足以完全解决这个问题。

答案 2 :(得分:0)

这很容易实现。

 String text  = "1+2+3";

        StringBuilder seperatedString = new StringBuilder();

        char[] chars = text.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char aChar = chars[i];
            if(!Character.isSpaceChar(aChar)) {
              seperatedString.append(aChar).append(",");
            }
        }

        System.out.println("The tokenized string"+ seperatedString);

或者你可以像@glowcoder一样使用正则表达式。当被问及你如何知道正则表达式时,你可以说你使用了RegexBuddy。

答案 3 :(得分:0)

要扫描输入,我建议使用java.util.Scanner。