diff --git a/bin/main/Race.class b/bin/main/Race.class new file mode 100644 index 00000000..12340d27 Binary files /dev/null and b/bin/main/Race.class differ diff --git a/settings.gradle b/settings.gradle index 716abf25..be110bf6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,4 +12,4 @@ dependencyResolutionManagement { mavenCentral() } } -rootProject.name = "BillCalculator" +rootProject.name = "Java-Module-Project" diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java deleted file mode 100644 index 2fbc00dd..00000000 --- a/src/main/java/Calculator.java +++ /dev/null @@ -1,22 +0,0 @@ -class Calculator { - - int friendsCount; - - String cart = "Добавленные товары:"; - double totalPrice = 0; - - Calculator(int friendsCount) { - this.friendsCount = friendsCount; - } - - void addItem(Item item) { - totalPrice += item.price; - cart = cart + "\n" + item.name; - - System.out.println(item.name + " в корзине"); - } - - double divideSum() { - return totalPrice / friendsCount; - } -} diff --git a/src/main/java/Car.java b/src/main/java/Car.java new file mode 100644 index 00000000..1d394df2 --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,9 @@ +public class Car { + String name; + int speed; + + Car(String name, int speed){ + this.name = name; + this.speed = speed; + } +} diff --git a/src/main/java/Formatter.java b/src/main/java/Formatter.java deleted file mode 100644 index 3f915b75..00000000 --- a/src/main/java/Formatter.java +++ /dev/null @@ -1,17 +0,0 @@ -public class Formatter { - - String formatValue(double price) { - double roundedValue = Math.floor(price); - if (roundedValue == 1) { - return "рубль"; - } else if (roundedValue >= 2 && roundedValue <= 4) { - return "рубля"; - } else { - return "рублей"; - } - } - - String roundResult(final double result) { - return String.format("%.2f", result); - } -} diff --git a/src/main/java/Item.java b/src/main/java/Item.java deleted file mode 100644 index fad8a4e9..00000000 --- a/src/main/java/Item.java +++ /dev/null @@ -1,10 +0,0 @@ -class Item { - - String name; - double price; - - Item(String name, double price) { - this.name = name; - this.price = price; - } -} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 11ba5d36..86d5807b 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,49 +1,30 @@ +import java.util.Objects; import java.util.Scanner; public class Main { + static Race race = new Race(); + public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - - int friendCount; - while (true) { - System.out.println("На сколько человек необходимо разделить счет?"); - friendCount = scanner.nextInt(); - - if (friendCount > 1) { + String command = "start"; + + while(true) + { + if(Objects.equals(command, "start")) + { + if(race.commandStart()) + { + command = scanner.nextLine(); + } + } else if(Objects.equals(command, "exit")) + { + System.out.println("Завершаем работу."); break; - } else if (friendCount == 1) { - System.out.println( - "Нет смысла делить сумму на одного человека. Давайте попробуем ввести другое значение, которое будет больше единицы."); } else { - System.out.println("Неверное количество друзей. Значение должно быть болье единицы, давайте попробуем еще раз."); - } - } - - Calculator calculator = new Calculator(friendCount); - - while (true) { - System.out.println("Введите название товара"); - String name = scanner.next(); - - System.out.println("Введите стоимость товара в формате: 'рубли.копейки' [10.45, 11.40]"); - double price = scanner.nextDouble(); - - calculator.addItem(new Item(name, price)); - - System.out.println( - "Хотите добавить еще один товар? Введите любой символ для продолжения, либо 'Завершить' если больше нет товаров для добавления"); - String answer = scanner.next(); - - if (answer.equalsIgnoreCase("Завершить")) { - break; + System.out.println("Комманда не распознана."); + command = scanner.nextLine(); } } - - double result = calculator.divideSum(); - Formatter formatter = new Formatter(); - - System.out.println(calculator.cart); - System.out.println("Каждому человеку к оплате: " + formatter.roundResult(result) + " " + formatter.formatValue(result)); } } diff --git a/src/main/java/Race.java b/src/main/java/Race.java new file mode 100644 index 00000000..a4209fba --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,86 @@ +import java.util.ArrayList; +import java.util.Scanner; + +public class Race { + ArrayList carList = new ArrayList<>(); + + Scanner scanner = new Scanner(System.in); + String leader; + int distance = 0; + String command = "start"; + + private void newLeader(String carName,int speed) { + int distance = 24 * speed; + if(distance > this.distance) + { + this.leader = carName; + } + } + private void rounds() + { + for(int i = 1; i <= 3; i++) { + try { + Thread.sleep(1000); + System.out.println(i + "й круг пройден!"); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + public boolean commandStart() + { + if(carList.isEmpty()) + { + System.out.println("Введите данные 3-х автомобилей для начала гонки.\nВ этой гонке только одно правило: Допускаются автомобили со скоростью не выше 250 км/ч"); + } + if(carList.size() < 3) { + addCars(); + } else { + this.start(carList); + carList.clear(); + return true; + } + return false; + } + public void addCars() + { + System.out.println("Введите название " + (carList.size() + 1) + "-го автомобиля"); + String name = scanner.next(); + + System.out.println("Введите скорость автомобиля '"+ name +"' (0-250)"); + int speed = scanner.nextInt(); + if (speed >= 0 && speed <= 250) { + carList.add(new Car(name, speed)); + + } else if(speed < 0) { + System.out.println("С этим автомобилем что-то не так. Данный автомобиль дисквалифицирован."); + } else { + System.out.println("Превышена максимальная скорость автомобиля. Данный автомобиль дисквалифицирован."); + } + } + public void start(ArrayList carList) + { + for(int i = 3; i > 0; i--) { + try { + System.out.println(i); + Thread.sleep(1000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + System.out.println("СТАРТ!"); + this.rounds(); + this.finish(carList); + } + private void finish(ArrayList carList) + { + for(Car item: carList) { + this.newLeader(item.name,item.speed); + } + System.out.println("ФИНИШ!"); + System.out.println("Подедитель гонки - "+this.leader+"!"); + System.out.println("Для выхода напишите команду 'exit'\nДля продолжения гонок введите 'start'"); + + } + +}