看一下StreamTokenizer here的演示代码。当字符串中有/时,它似乎无法正常工作(仅在/中的字符串之间添加StringReader)。这是提到的链接中的代码,

StreamTokenizer tokenizer = new StreamTokenizer(
    new StringReader("Mary had 1 little lamb..."));

    while(tokenizer.nextToken() != StreamTokenizer.TT_EOF){

        if(tokenizer.ttype == StreamTokenizer.TT_WORD) {
            System.out.println(tokenizer.sval);
        } else if(tokenizer.ttype == StreamTokenizer.TT_NUMBER) {
            System.out.println(tokenizer.nval);
        } else if(tokenizer.ttype == StreamTokenizer.TT_EOL) {
            System.out.println();
        }
    }


例如,对于字符串"Mary had 1 little lamb...",输出为

Mary
had
1.0
little
lamb...


对于字符串"Mary had 1 /little lamb...",输出为

Mary
had
1.0



/是否可以用作EOF令牌?如果是这样,为什么?
有什么方法可以将/区别为EOF以外的其他令牌。

最佳答案

根据the documentation/StreamTokenizer中的注释字符。之后的所有操作,直到EOL或EOF都将被忽略,并且不会被标记化。

例如,继续您提供的示例,如果字符串为"Mary had 1 / 2\n little lamb...",则会注释掉2并且不会对其进行标记化,并且标记化将在\n之后继续。因此输出为:

Mary
had
1.0
little
lamb...

关于java - 除法运算符“/”的StreamTokenizer行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29847039/

10-10 15:31