Stack Overflow на русском Asked on December 9, 2021
Кто подскажет, почему не выводится общее количество секунд, потраченное на движение лифта между этажами?
package com.company;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
final int MAX_FLOORS = 25;
Deque<Integer> floors = new ArrayDeque<>();
floors.add(1);
System.out.printf("Текущее положение лифта: %d этажn", floors.getFirst());
int waitDoorsInSeconds = 10;
int waitMoveInSeconds = 5;
int totalSeconds = 0;
int previousFloor = -1;
int currentFloor = 1;
while (true) {
System.out.println("Ожидаю ввода этажа: (для завершения введите 0)");
String input = scanner.nextLine();
int x = Integer.parseInt(input);
if (x > 25) {
System.out.println("Такого этажа нет!");
} else if (x == 0) {
System.out.println("Лифт проследовал по следующим этажам:");
floors.poll();
System.out.println("Этажи: " + floors);
if (previousFloor != -1) {
totalSeconds += Math.abs(currentFloor - previousFloor) * waitMoveInSeconds;
totalSeconds += waitDoorsInSeconds;
}
System.out.println("Время затраченное лифтом на маршрут: " + totalSeconds + " с.");
break;
} else {
floors.add(x);
continue;
}
}
}
}
Код:
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
final int MAX_FLOORS = 25;
Deque<Integer> floors =
new ArrayDeque<>();
floors.add(1);
System.out.printf("Текущее положение лифта: %d этажn", floors.getFirst());
int waitDoorsInSeconds = 10;
int waitMoveInSeconds = 5;
while (true) {
System.out.println("Ожидаю ввода этажа: (для завершения введите 0)");
String input = scanner.nextLine();
int x = Integer.parseInt(input);
if (x > MAX_FLOORS) {
System.out.println("Такого этажа нет!");
} else if (x == 0) {
System.out.println("Лифт проследовал по следующим этажам:");
floors.poll();
System.out.println("Этажи: " + floors);
int previousFloor = -1;
int totalSeconds = 0;
while (floors.size() > 0) {
int currentFloor = floors.remove();
if (previousFloor != -1) {
totalSeconds += Math.abs(currentFloor - previousFloor) * waitMoveInSeconds;
totalSeconds += waitDoorsInSeconds;
}
previousFloor = currentFloor;
}
System.out.println("Время затраченное лифтом на маршрут: " + totalSeconds + " с.");
break;
} else {
floors.add(x);
}
}
}
}
Пример:
Текущее положение лифта: 1 этаж
Ожидаю ввода этажа: (для завершения введите 0)
10
Ожидаю ввода этажа: (для завершения введите 0)
3
Ожидаю ввода этажа: (для завершения введите 0)
15
Ожидаю ввода этажа: (для завершения введите 0)
30
Такого этажа нет!
Ожидаю ввода этажа: (для завершения введите 0)
6
Ожидаю ввода этажа: (для завершения введите 0)
0
Лифт проследовал по следующим этажам:
Этажи: [1, 10, 3, 15, 6]
Время затраченное лифтом на маршрут: 225 с.
Answered by Alexandr on December 9, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP