[英]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.