Вы могли бы сделать что-то вроде ...
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