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..4fccc3dc --- /dev/null +++ b/src/main/java/Car.java @@ -0,0 +1,9 @@ +public class Car { + final String name; + final 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..4a682324 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,49 +1,56 @@ import java.util.Scanner; + public class Main { + static Scanner scanner = new Scanner(System.in); + 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) { - break; - } else if (friendCount == 1) { - System.out.println( - "Нет смысла делить сумму на одного человека. Давайте попробуем ввести другое значение, которое будет больше единицы."); - } else { - System.out.println("Неверное количество друзей. Значение должно быть болье единицы, давайте попробуем еще раз."); - } - } - Calculator calculator = new Calculator(friendCount); + System.out.println("Enter amount of racers"); + int amount = scanner.nextInt(); - while (true) { - System.out.println("Введите название товара"); - String name = scanner.next(); + System.out.println("Now enter racers' names and speed\nOn a separate lines"); + + Car[] cars = create(amount); + + Race race = new Race(cars); - System.out.println("Введите стоимость товара в формате: 'рубли.копейки' [10.45, 11.40]"); - double price = scanner.nextDouble(); + race.start(); - calculator.addItem(new Item(name, price)); - System.out.println( - "Хотите добавить еще один товар? Введите любой символ для продолжения, либо 'Завершить' если больше нет товаров для добавления"); - String answer = scanner.next(); +// for (Car car: cars) System.out.printf("Name: %s\nSpeed: %d\n", car.name, car.speed); - if (answer.equalsIgnoreCase("Завершить")) { - break; + + } + + private static Car[] create(int amount) { + Car[] cars = new Car[amount]; + + for (int i = 1; i < amount + 1; ++i) { + System.out.printf("%d racer's name and speed:\n", i); + String name = scanner.next(); + String speed; + int intSpeed; + while (true) { + speed = scanner.next(); + + try { + intSpeed = Integer.parseInt(speed); + } catch (NumberFormatException e) { + System.out.println("Speed should be a number between 0 and 250\nTry again"); + continue; + } + + if (0 < intSpeed && intSpeed <= 250) { + break; + } else { + System.out.println("Speed should be between 0 and 250\nTry again"); + } } + cars[i - 1] = new Car(name, intSpeed); } - double result = calculator.divideSum(); - Formatter formatter = new Formatter(); - - System.out.println(calculator.cart); - System.out.println("Каждому человеку к оплате: " + formatter.roundResult(result) + " " + formatter.formatValue(result)); + return cars; } -} +} \ No newline at end of file diff --git a/src/main/java/Race.java b/src/main/java/Race.java new file mode 100644 index 00000000..ba37ea5f --- /dev/null +++ b/src/main/java/Race.java @@ -0,0 +1,41 @@ +import java.util.*; + +public class Race { + Car[] racers; + + Race(Car[] racers) { + this.racers = racers; + } + + public void start() { + ArrayList distances = calculateDistances(racers); + + String winner = calculateWinner(distances); + + System.out.printf("The winner is %s", winner); + } + + private ArrayList calculateDistances(Car[] racers) { + ArrayList distances = new ArrayList<>(); + + for (Car racer : racers) { + distances.add(racer.speed * 24); + } + + return distances; + } + + private String calculateWinner(ArrayList distances) { + int maxDistance = 0; + + for (int distance: distances) { + if (distance > maxDistance) { + maxDistance = distance; + } + } + + int indexOfWinner = distances.indexOf(maxDistance); + + return racers[indexOfWinner].name; + } +}