如果包含“”,则获取ArrayList中的String

时间:2014-02-12 12:48:54

标签: java arraylist

我正在尝试将文件读取到arraylist。这个问题解决了,我把文件的一行放到了arraylist的一个块中。但是在这个过程中我想得到块的索引,如果要插入的行包含某个东西。这是我到目前为止所做的。我被卡住了。

public class practice3 {

    public static void main(String[] args) throws Exception {
        Scanner data = new Scanner(new FileReader("StudData1.txt"));
        ArrayList<String> ArrayData = new ArrayList<String>();
        int i = 0;
        while (data.hasNextLine()) {
            ArrayData.add(i, data.nextLine());
            if (data.nextLine().contains("ID: ")) {
                System.out.print(ArrayData.indexOf(ArrayData.contains("ID: ")));
            }
            i = i + 1;
        }
        // System.out.print(ArrayData.get(2));
        // System.out.print(ArrayData.size());
    }
}

示例:

************************
Student N. 1  
ID: 4450
Surname: Wol
Name: Verine
************************

--------------------------------
Subject N. 1 : a. Boat Mantenance
--------------------------------
Homework 1: 89

Homework 2: 56

Homework 3: 65

Homework 4: 3

Exam 1: 35

Exam 2: 45

Exam 3: 89

Exam 4: 99

3 个答案:

答案 0 :(得分:0)

你必须这样做:

String line = data.nextLine();

ArrayData.add(i, line);

if (line.contains("ID: ")) {
    // do what you want here
}
...

因为当你data.nextLine()时,它会读取当前行并传递给下一行

答案 1 :(得分:0)

试试这个:

    while(data.hasNextLine())
    {
        //if you call nextLine() two times you will get two different items
        String data = data.nextLine();  
        ArrayData.add(i, data);

        if (data.contains("ID: "))
        {
            System.out.print(ArrayData.indexOf(data));  
           //check the index of data, but that should be equal to i. no idea what you want to do here?
        }
        i++;
    }

答案 2 :(得分:0)

检查你的while循环。每当你打电话data.nextLine()时,它都会前进到下一行。你打电话给它两次。首先添加到arraylist,第二个同时检查条件。你实际上是添加了一半的文件并检查每个替代行的条件。