Попробуйте сделать свой код объектно-ориентированным .Моделируйте лифт как объект.Что может сделать лифт?Он может идти вверх и вниз, поэтому вам понадобится несколько методов для этого.Какими свойствами обладает лифт?У него есть текущий этаж, который будет переменной экземпляра.Вам также нужен конструктор для создания вашего лифта.
Убедитесь, что вы используете значимые имена переменных и правильно прокомментируйте свой код.
Вот код, который поможет вам:
public class Elevator {
// the floor that the elevator is currently on
private int currentFloor;
/**
* Creates an elevator at the specified floor.
*
* @param initialFloor the initial floor
*/
public Elevator(int initialFloor) {
this.currentFloor = initialFloor;
}
/**
* @return the currentFloor
*/
public int getCurrentFloor() {
return currentFloor;
}
/**
* Moves the elevator to the specified floor.
*
* @param floor the floor to go to.
*/
public void goToFloor(int floor) {
if (floor < currentFloor) {
goDownToFloor(floor);
} else if (floor > currentFloor) {
goUpToFloor(floor);
}
System.out.println("The elevator has arrived");
}
/**
* Moves the elevator up to the specified floor.
*
* @param floor the floor to go up to.
*/
private void goUpToFloor(int floor) {
System.out.println("The elevator is on its way up...");
//TODO: put loop to go up to the floor here
}
/**
* Moves the elevator down to the specified floor
*
* @param floor the floor to go down to.
*/
private void goDownToFloor(int floor) {
System.out.println("The elevator is on its way down...");
//TODO: put loop to go down to the floor here
}
}
Теперь вам нужен метод main
, который создает лифт, читает пользовательский ввод и управляет им.Вы можете создать для этого новый класс или добавить его к классу Elevator
, указанному выше.
public static void main(String[] args) throws Exception {
//create an elevator at a random floor
Elevator elevator = new Elevator(new Random().nextInt(11));
int elevatorFloor = elevator.getCurrentFloor();
System.out.println("The elevator is now on floor " + elevatorFloor);
System.out.print("Which floor are you at now? (0-10) where 0 = basement: ");
int personFloor = Keyboard.readInt();
if(personFloor == elevatorFloor) {
System.out.println("Enter the elevator");
}
else {
elevator.goToFloor(personFloor);
}
System.out.println("To which floor would you want to go (0-10) where 0 = basement");
int destinationFloor = Keyboard.readInt();
elevator.goToFloor(destinationFloor);
}
Сравните этот подход с текущим.Он лучше моделирует проблему с точки зрения объектов и операций, которые вы можете над ними выполнять.Также меньше дублирования кода.