我正在尝试读取包含表单数据的文件,
0 160 76 160
0 320 11 320
0 960 470 960
960
0 12 6 12
0 24 7 24
0 1500 302 1500
3000
0 70 33 70
0 140 60 140
0 784 74 784
3920
我想跳过包含单个值的每第四行(例如4、8、12、..等)。 我试过这个方法,
Scanner scan = new Scanner(new FileInputStream("demofile.txt"));
int linenum = 0;
while(scan.hasNextLine()){
if(linenum != 0 && linenum % 4 == 0){
linenum++;
continue;
}
else{
String str = scan.nextLine();
StringTokenizer st = new StringTokenizer(str, " ");
//Extract four tokens from single line
String a = st.nextToken();
String b = st.nextToken(); // This line throws java.util.NoSuchElementException
//and so on..
//other stuff
...
linenum++;
}
}
但是它不起作用,我收到以下错误跟踪:
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
at ReadDemo.main(ReadDemo.java:48) //line 48 is second `st.nextToken()` in above code
表明我正在阅读文件末尾, 上面的逻辑有什么问题吗? 请帮忙。谢谢。
最佳答案
从 1 开始 linenum,你的程序就会运行。 此外,linenum 的递增实现得也很差。 尝试这样的事情:
linenum = 1;
while (scan.hasNextLine())
{
String line = scan.nextLine();
if ((linenum % 4) > 0)
{
StringTokenizer stringTokenizer = new StringTokenizer(line, " ");
... blah
}
++linenum;
}
关于java - 从文件读取时跳过每 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23346340/