В случае, если вы не просто хотите, чтобы реорганизовать код, который используется Scanner
, вы можете сделать это с FileReader
:
String fileName = "cars.txt";
List<Car> cars = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))){
int count = Integer.parseInt(reader.readLine());
for (int i = 0; i < count; i++) {
int year = Integer.parseInt(reader.readLine());
String brand = reader.readLine();
String type = reader.readLine();
cars.add(new Car(year, brand, type));
}
} catch (IOException | NumberFormatException e) {
System.err.println("error reading cars from file "+fileName);
e.printStackTrace();
}
Пожалуйста, обратите внимание, что вам может понадобиться, чтобы сделать правильную обработку ошибок в блоке поймать. Кроме того, читатель может вернуться null
, когда он достигает конца файла, только в случае, если вы хотите, чтобы подтвердить ввод приходит из файла (который вы всегда должны) ..
А вот ваш Car
класс:
public class Car {
private final int year;
private final String brand;
private final String type;
public Car(int year, String brand, String type) {
this.year = year;
this.brand = brand;
this.type = type;
}
public int getYear() {
return year;
}
public String getBrand() {
return brand;
}
public String getType() {
return type;
}
}
Просьба включить код, который у вас есть в настоящее время, с тем, что именно является проблемой. –