while(reader.hasNextLine()){
String s = reader.nextLine();
String[] tokens = s.split(" ");
while(t < tokens.length){
a = 0;
while( a < 6 ) {
if(tokens[t].equals(d[a])){
System.out.println("found keyword -> " + tokens[t]);
files = 1;
}
a++;
}
p = 0;
while( p < 2 ) {
if(tokens[t].equals(xyz[p])){
System.out.println("found token -> " + tokens[t]);
files2 = 1;
}
p++;
}
if (files2 == 0 && files == 0){
System.out.println("found identifier -> " + tokens[t]);
}
files = 0;
files2 = 0;
t++;
}
reader.close();
}
我前几天发布了类似的内容,但是while循环并没有修复它。有人可以帮我解决这个问题。问题是它没有读取整个文件但只读取一行,这就是第一行。我不知道我在做什么。谢谢。
答案 0 :(得分:4)
看起来你正在关闭while循环中的读者(reader.close();
)。
刚刚提到的@rlinden,请务必重置循环变量。您目前所处的位置reader.close();
请确保为下一个循环设置t = 0;
或采取@user184994的sage建议。
无论哪种方式,您都需要在最外面的while循环之外(下方)移动reader.close();
。
此块上方是否还有其他代码丢失?这可能会对读者的运作方式产生重大影响。请将您的新/编辑的代码发布在第一个代码块下面,以便我可以看到任何新问题。使用更新:
标记标记它们如果可能的话,我会留意编辑并提供更多建议。
答案 1 :(得分:1)
我认为问题在于你在内部之后没有重置t。尝试包括
行t=0;
在内循环之前。
我没有调试你的代码,但是我假设如果第一行的数量等于或大于第二行,当读取第二行时,t已经等于tokens.length。
我希望它有所帮助。
答案 2 :(得分:0)
正如其他人所提到的,reader.close();
调用位于while(reader.hasNextLine())
循环内。这导致读取器在读取第二行之前关闭。将它移到最外面的循环之外(即在下一行的}
之后)。然后解决变量t
没有设置/重置的问题。