Пропускать ноль при выводе текста в консоль
Код действует, как имитация работы лифта. При вводе в консоль числа, выводится последовательность этажей от текущего до введённого в консоль. Необходимо сделать так, чтобы консоль не выводила нулевой этаж, а после 1 сразу шёл -1.
public class Elevator {
private int currentFloor = 1;
public int minFloor;
public int maxFloor;
Elevator(int minFloor, int maxFloor) {
this.minFloor = minFloor;
this.maxFloor = maxFloor;
}
public void moveDown() {
currentFloor = currentFloor > minFloor ? currentFloor - 1 : currentFloor;
}
public void moveUp() {
currentFloor = currentFloor < maxFloor ? currentFloor + 1 : currentFloor;
}
public int getCurrentFloor() {
return currentFloor;
}
public void move(int floor) {
if (floor > maxFloor | floor < minFloor | floor == 0) {
System.out.println("Несуществующий этаж!");
return;
}
if (currentFloor != floor) {
while (currentFloor < floor) {
moveUp();
System.out.println("Этаж: " + currentFloor);
}
}
if (currentFloor != floor) {
while (currentFloor > floor) {
moveDown();
System.out.println("Этаж: " + currentFloor);
}
}
}
}
public class Main {
public static void main(String[] args) {
Elevator elevator = new Elevator(-3, 26);
while(true) {
System.out.print("Введите номер этажа: ");
int floor = new Scanner(System.in).nextInt();
elevator.move(floor);
}
}
}
Ответы (2 шт):
Автор решения: Fleckinger
→ Ссылка
Например можно изменить методы moveDown() и moveUp() вот так:
public void moveDown() {
if (currentFloor == 1) {
currentFloor -= 2;
} else {
currentFloor -= 1;
}
}
public void moveUp() {
if (currentFloor == -1) {
currentFloor += 2;
} else {
currentFloor += 1;
}
}
Автор решения: Adm123
→ Ссылка
Или вот так
public void moveDown() {
currentFloor--;
if (currentFloor == 0) {
moveDown();
}
}
public void moveUp() {
currentFloor++;
if (currentFloor == 0) {
moveUp();
}
}