Я только начал изучать Java, с небольшим опытом работы с Python и небольшим количеством JavaScript, но не использовал классы.У меня есть проблема с этим кодом (только для справки, ниже я указываю точную проблему):
public class Race {
Boolean isThereABrokenTruck = false;
private Car[] cars;
private Motorcycle[] motorcycles;
private Truck[] trucks;
private void createVehicles() {
cars = new Car[10];
motorcycles = new Motorcycle[10];
trucks = new Truck[10];
} // creates 10 cars, 10 trucks and 10 motorcycles.
private void simulateRace() {
Weather.setRaining();
for (Car car : cars) {
for (int i = 0; i < 50; i++) {
car.moveForAnHour();
}
}
for (Motorcycle motorcycle : motorcycles) {
for (int i = 0; i < 50; i++) {
motorcycle.moveForAnHour();
}
}
for (Truck truck : trucks) {
for (int i = 0; i < 50; i++) {
truck.moveForAnHour();
}
}
}
private void printRaceResults() {
for (Car car : cars) {
System.out.println("Name: " + car.name);
System.out.println("\n Distance Travelled: " + car.distanceTraveled);
System.out.println("\n Type:" + car.getClass().getName());
}
for (Motorcycle motorcycle : motorcycles) {
System.out.println("Name: " + motorcycle.name);
System.out.println("\n Distance Travelled: " + motorcycle.distanceTraveled);
System.out.println("\n Type:" + motorcycle.getClass().getName());
}
for (Truck truck : trucks) {
System.out.println("Name: " + truck.name);
System.out.println("\n Distance Travelled: " + truck.distanceTraveled);
System.out.println("\n Type:" + truck.getClass().getName());
}
} // prints each vehicle's name, distance traveled ant type.
protected Boolean isThereABrokenTruck() {
return isThereABrokenTruck;
}
public static void main(String[] args) {
Race race = new Race();
race.createVehicles();
race.simulateRace();
race.printRaceResults();
}
}
Этот код компилируется (классы Car, Motorcycle и Truck также определены в моем коде, ноне имеет отношения к вопросу), однако я получаю исключение нулевого указателя во время выполнения на
for (Car car : cars) { // null pointer exception here
for (int i = 0; i < 50; i++) {
car.moveForAnHour();
}
}
, поэтому я предполагаю, что не присваиваю значение автомобилям должным образом.Я вынужден использовать отдельные методы для создания этих транспортных средств, оперировать ими и выводить результаты на консоль.В Python я бы, вероятно, просто возвращал несколько массивов (или списков) и присваивал их значения различным переменным, но как мне сделать это здесь, в Java?