Java StreamTokenizer.nextToken跳过过多令牌?

Java StreamTokenizer.nextToken跳过过多令牌?,java,stream,token,tokenize,Java,Stream,Token,Tokenize,我有下面的代码,应该遍历每个标记,当指定的字符按顺序出现时,表示注释已经开始或结束 我创建了最后一个if语句,以便在位置不在注释之间时执行一些代码 int commentFound = -1; int commentEnded = -1; do { int token = st.nextToken(); switch (token) {

我有下面的代码,应该遍历每个标记,当指定的字符按顺序出现时,表示注释已经开始或结束

我创建了最后一个if语句,以便在位置不在注释之间时执行一些代码

int commentFound = -1;
                int commentEnded = -1;
                do {
                    int token = st.nextToken();
                    switch (token) {
                        case StreamTokenizer.TT_EOF:
                            System.out.println("End of File encountered.");
                            eof = true;

                        default:
                            if ((token == '<')) {
                                System.out.println(st.sval);
                                if (st.nextToken() == '!') {
                                    System.out.println(st.sval);
                                    if (st.nextToken() == '-') {
                                        if (st.nextToken() == '-') {
                                            if (st.nextToken() == '-') {
                                                System.out.println("Comment Found on line number: " + st.lineno());
                                                commentFound = st.lineno();
                                            }
                                        }
                                    }
                                }
                            } 
                            else if ((token == '-')) {
                                if (st.nextToken() == '-') {
                                    if (st.nextToken() == '-') {
                                        if (st.nextToken() == '>') {
                                            System.out.println("Comment Ended on: " + st.lineno());
                                            commentEnded = st.lineno();
                                        }
                                    }
                                }
                            }
                            if ((commentFound != -1) && !((st.lineno() > commentFound) && (st.lineno() < commentEnded))) {
intcommentfound=-1;
int=1;
做{
int token=st.nextToken();
交换机(令牌){
case StreamTokenizer.TT_EOF:
System.out.println(“遇到文件结尾”);
eof=真;
违约:
如果((令牌=“”){
System.out.println(“注释结束于:+st.lineno());
commentEnded=st.lineno();
}
}
}
}
如果((commentFound!=-1)和((st.lineno()>commentFound)和(&(st.lineno()
注释开始标记总是被找到,但是结束标记并不总是被找到。经过一些调试后,我想我发现“nextToken”跳过了太多标记。这可能吗?如果可能,有什么方法可以解决这个问题吗


如果您有任何帮助,我们将不胜感激。

。看来您在结束令牌检测方面有缺陷。您需要提供源文本。
您的代码当前无法识别这样的结尾
cccc-->
,因为它返回cccc---作为整词标记。

否结尾标记检测是正确的,这就是我的文件中注释的结尾。您应该提供您尝试匹配的方法和标记的完整代码,很难猜到您想要实现什么。我想要的只是成为一个我无法识别注释的开始和结束,我不知道我是否已正确推理这是错误是的,您是否建议其他解决此问题的方法?如果您只是查找注释,请阅读文件的每一行,然后使用String.indexOf()或String.matches()如何查找开始/结束注释字符串。