1

免责声明:这是作业,所以我在一些限制下工作。

我需要读取文件的前 5 行并使用这些字符串来更改标签和按钮,然后将文件的其余部分保存为 arraylist。

该文件如下所示:

Name  
Label1  
Label2  
Button1  
Button2  
Button3  
word0,word0  
word1,word1  
etc  

我已经能够使用以下代码读取 (word0,word0 等) 中的单词对(前 5 行是添加的,所以它现在可能不起作用):

public static ArrayList loadFile(String filename) {
    ArrayList<Wordpair> temp = new ArrayList<>();
    try {
        FileInputStream fis;
        fis = new FileInputStream(filename);
        //Scanner to read individual lines from a file
        Scanner scan = new Scanner(fis);
        while (scan.hasNext()) {
            String line = scan.nextLine();
            //Scanner to read individual items from a string 
            Scanner lineScan = new Scanner(line);
            lineScan.useDelimiter(",");
            String question = lineScan.next();
            String answer = lineScan.next();
            //Create the new Wordpair
            Wordpair wp = new Wordpair(question, answer);
            //Add the new wordpair to the list
            temp.add(wp);
        }
        scan.close();
    } catch (FileNotFoundException ex) {
        Logger.getLogger(IO.class.getName()).log(Level.SEVERE, null, ex);
    }
    return temp;
}

我的想法是将文件的前 5 行保存为一个单独的对象,它只包含在文件中找到的信息,但我不知道该怎么做。我最初的想法是创建一个新方法,它只读取前 5 行,然后返回一个对象,就像上面的代码对 wordpairs 所做的那样,但我无法得到任何工作。然后我想我需要让现有代码跳过开头。

如您所见,我在这里很困惑,所以如果有人能指出我正确的方向,我将不胜感激!

4

2 回答 2

2

我会在你的 while 循环中使用一个计数器。

int count = 0;
while (scan.hasNext()) {
        String line = scan.nextLine();
        //Scanner to read individual items from a string 
        Scanner lineScan = new Scanner(line);
        lineScan.useDelimiter(",");
        String question = lineScan.next();
        String answer = lineScan.next();

        if (count < 5)
          //lineScan contains one of the first 5 lines
          //call a method to do something with these lines here
        else {
          //Create the new Wordpair
          Wordpair wp = new Wordpair(question, answer);
          //Add the new wordpair to the list
          temp.add(wp);
        }

        count++;
    }
于 2013-04-26T17:04:55.707 回答
0

您可以从循环中的计数器使用:

int c = 0;
while (scan.hasNext()) {
    if (c < 5){
        //do something
        //first 5 lines
    }
    else{
        //otherwise
        //next lines
    }
}
于 2013-04-26T17:09:26.037 回答