你可以做这样的事情......
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