无法读取整个文件,只读一行

时间:2014-06-11 19:13:19

标签: java token

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循环并没有修复它。有人可以帮我解决这个问题。问题是它没有读取整个文件但只读取一行,这就是第一行。我不知道我在做什么。谢谢。

3 个答案:

答案 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没有设置/重置的问题。

相关问题