java - 除法运算符的 StreamTokenizer 行为 "/"

标签 java string eof stringreader

查看 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 token ?如果是,为什么?
  • 有什么方法可以将 / 区分为不同于 EOF 的不同标记。

最佳答案

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

例如,继续您给出的示例,如果字符串是 "Mary had 1/2\n little lamb...",则 2 被注释out 并且不会被标记化,并且标记化将在 \n 之后恢复。所以输出将是:

Mary
had
1.0
little
lamb...

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

相关文章:

c - 在 while 循环中使用 fscanf 和 fprintf 进行读写

c - While 循环中表达式的双括号

java - MongoDb BSON 以 UTC 时间存储日期

Java驱动程序按时间戳删除分区

java - 连接小部件

Java 应用程序未在 tomcat 9 centos 7 上加载

javascript - Node JS 判断字符串中的某个单词是否在数组中

algorithm - 词比较算法

android - SQLite 异常无法将 BLOB 转换为字符串

c - EOF 在 C 中如何工作?