繁体   English   中英

行尾不读取-流令牌化Java

[英]End of Line not Reading - Stream Tokenize Java

我的程序使用Stream Tokenizer从文件中读取并打印内容。 检查文件是否已到达文件末尾的if条件不起作用。

public static void main(String[] args)throws Exception {
  FileReader fr = new FileReader("sample.txt");
    StreamTokenizer st = new StreamTokenizer(fr);
    System.out.printf("%26s","Student Marksheet");
    System.out.println(); 

     do{
         tokenType=st.nextToken();
     if(tokenType==StreamTokenizer.TT_WORD) System.out.print(st.sval+"      ");
      if(tokenType==StreamTokenizer.TT_NUMBER) System.out.print(st.nval+"      ");
      if(tokenType==StreamTokenizer.TT_EOL) System.out.println(); //this line is the problem
     } while(tokenType!=StreamTokenizer.TT_EOF); 
}

这是文本文件


名称eng phys chem comp

名称1 5 4 3 2 1

本地人5 2 1 4 100

TT_EOL

public final static int TT_EOL = '\n'

描述

此令牌类型指示已到达行尾。 除非已调用eolIsSignificant(true),否则nextToken()不会返回该值。

eolIsSignificant(false)是默认状态。 因此,使其正确并运行将起作用的代码。 如果为假,则下一个令牌将不返回TT_EOL。

检查以下代码。

     FileReader fr = new FileReader("input.txt");
                    StreamTokenizer st = new StreamTokenizer(fr);
                    st.eolIsSignificant(true);//add this line
                    System.out.printf("%26s","Student Marksheet");
                    System.out.println(); 
                    int  tokenType=0;
                     do{
                          tokenType=st.nextToken();
                     if(tokenType==StreamTokenizer.TT_WORD) System.out.print(st.sval+"      ");
                      if(tokenType==StreamTokenizer.TT_NUMBER) System.out.print(st.nval+"      ");
                      if(tokenType==StreamTokenizer.TT_EOL) System.out.println(""); //this line is the problem
                     } while(tokenType!=StreamTokenizer.TT_EOF); 
                }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM