1

我是新来的,只是在努力尝试读取文本文件。每一行都有一个单词和一个相应的数字代码。这个想法是阅读它并将代码和单词放在单独的变量中。我对这个领域了解不多,但我一直在网上四处寻找,并提出以下几点:

try{
    FileReader freader=new FileReader(f); 
    BufferedReader inFile=new BufferedReader(freader);
    while (inFile.readLine()!=null){
       String s=null;
       s=inFile.readLine();
       System.out.println(s);
               String[] tokens=s.split(" ");
       string=tokens[0];
       System.out.println(string);
       code=tokens[1];
       System.out.println(code);
       c.insert(string, code);
    }//end outer while
}//end try

问题是没有读取文本文件的第一行。然后它每次都跳过一行!(也就是说,只读取第 1、3、5、7 行等)

正如我上面所说的,我是新人,我对我在不同网站上看到的所有不同的东西不太了解(比如为什么所有东西都是 bufferedThis 或 bufferedThat,或者如何正确使用所有标记器的东西)。我在不同的时间尝试了一些不同的事情,最终得到了这个。

4

2 回答 2

7

您的 while 循环正在吞噬文件中的一半行。

while (inFile.readLine()!=null)

这会读取一行,但不会将其分配给任何东西。String在循环之前声明 a并以这种方式读取每一行。

String line;
while ((line = inFile.readLine()) != null)

现在该变量line将在循环内可用,因此您无需inFile.readLine()在循环中调用。

于 2012-10-14T21:22:45.187 回答
0

你的问题是你每行都读了两次。一个在 while 块内,一个在 while 的条件下。

尝试这个:

try{
    FileReader freader=new FileReader(f); 
    BufferedReader inFile=new BufferedReader(freader);
    String s;
    while ((s=inFile.readLine())!=null){       
       System.out.println(s);
        String[] tokens=s.split(" ");
       string=tokens[0];
       System.out.println(string);
       code=tokens[1];
       System.out.println(code);
       c.insert(string, code);
    }//end outer while
}//end try
于 2012-10-14T21:27:07.177 回答