我正在尝试将文件读取到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
答案 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,第二个同时检查条件。你实际上是添加了一半的文件并检查每个替代行的条件。