我有3个班 - Car,ParkingLot和Driver。 在ParkingLot类中,我有一个名为parkCar的方法,它应该检查第一个空位并将汽车对象放在那里:
public void parkCar(Car car) {
for (int i = 0; i < cars.length; i++) {
if (cars[i] == null) {
cars[i] = car;
}
}
}
在Driver类中,应该有一个方法调用parkCar方法将汽车对象放在停车位(司机应该不再有车):
public void putCarInParkingSpot(Parkinglot parkingLot) {
parkingLot.parkCar(this.car);
this.car = null;
}
最后,我在ParkingLot类中有一个showParkingLot方法,它应该显示数组中的所有汽车:
public void showParkingLot() {
for (int i = 0; i < cars.length; i++) {
if (cars[i] != null) {
System.out.println(cars[i].getModel());
}
}
}
当我使用showParkingLot时,1个汽车对象被放置在数组中的每个位置(打印出15次),而不仅仅是第一个空位(cars [0])。有谁能解释为什么?
答案 0 :(得分:4)
停车完成后,您需要休息,请参阅下面的代码
public void parkCar(Car car) {
for (int i = 0; i < cars.length; i++) {
if (cars[i] == null) {
cars[i] = car;
break; // do not allocate other null spaces with same car, leave space for the next cars
}
}
}
根据{{3}}的建议修改,只需返回而不是中断。后循环可用于处理异常流动,即没有剩余的空间用于停放。
public void parkCar(Car car) {
for (int i = 0; i < cars.length; i++) {
if (cars[i] == null) {
cars[i] = car;
return; // do not allocate other null spaces with same car, leave space for the next cars
}
}
System.out.println("Sorry, no space left for parking");
//here you can add code so as to see a parking space at some other place , may be you can have a 2-d array with each row representing a parking space.
}
答案 1 :(得分:0)
你有两种类型的物体需要跟踪:一组空点和一组愿意停车的车。
parkCar
正确处理空白点if (cars[i]==null)cars[i] = car;
,但它不会检查愿意停放多少辆汽车。相反,您需要if (cars[i]==null && setOfCarsWillingToPark.size() > 0)
。
您的方法只停放一辆车,因此在发现一个地点时应使用break
。由于这是一种方法,您应该使用return
。