你可以做這樣的事情......
while ((sCurrentLine = br.readLine()) != null) {
String firstName = sCurrentLine;
String lastName = br.readLine();
String age = br.readLine();
String dob = br.readLine();
}
但是,這讓人頗爲有關文件要求的假設,它假定有每個條目4條線。
你可以將它自己的行中的每個條目,並使用deliminator將它們分開,例如
John;Smith;32;1991
然後用類似...
while ((sCurrentLine = br.readLine()) != null) {
String parts[] = currentLine.split(";");
String firstName = parts[0];
String lastName = parts[1];
String age = parts[2];
String dob = parts[3];
}
來讀取每個條目。這可以讓您對處理條目有更多的控制權,因爲您可以檢查parts
數組的長度以驗證它具有期望值的數量。
一旦你得到了一個條目,你會想要一個更好的方式來管理每個條目,我會創建一個簡單的POJO持有的價值觀,也許像...
public class Person {
private final String fisrtName;
private final String lastName;
private final int age;
private final int dob;
public Person(String fisrtName, String lastName, int age, int dob) {
this.fisrtName = fisrtName;
this.lastName = lastName;
this.age = age;
this.dob = dob;
}
public String getFisrtName() {
return fisrtName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public int getDob() {
return dob;
}
}
然後您可能能夠使用List
或Map
來存儲它們,這將使其更易於管理...
List<Person> people = new ArrayList<>(25);
//...
while ((sCurrentLine = br.readLine()) != null) {
String parts[] = currentLine.split(";");
String firstName = parts[0];
String lastName = parts[1];
String age = parts[2];
String dob = parts[3];
people.add(new Person(firstName, lastName, Integer.parseInt(age), Integer.parseInt(dob));
}
另一種解決方案可能是使用一個Scanner
,這將允許您使用next
和nextInt
來解析每個條目
因此,如果我們重新構造爲以下格式...
你可以簡單地使用
while ((sCurrentLine = br.readLine()) != null) {
Scanner scanner = new Scanner(sCurrentLine);
String firstName = scanner.next();
String lastName = scanner.next();
int age = scanner.nextInt();
int dob = scanner.nextInt();
people.add(new Person(firstName, lastName, age, dob);
}
代替
每個元素都在它自己的行嗎? (即'約翰'是在它自己的路線上,'史密斯'是在它自己的路線上,等等) – MadProgrammer
是的,我認爲這會讓學習更容易。 – Jane
如果項目在同一行上,您不必獲取字符串長度然後將其分開? – Jane