Java:数组,多个类

时间:2016-06-12 06:22:40

标签: java arrays

我有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])。有谁能解释为什么?

2 个答案:

答案 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