Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ dependencyResolutionManagement {
mavenCentral()
}
}
rootProject.name = "BillCalculator"
rootProject.name = "Java-Module-Project"
22 changes: 0 additions & 22 deletions src/main/java/Calculator.java

This file was deleted.

9 changes: 9 additions & 0 deletions src/main/java/Car.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
public class Car {
final String name;
final int speed;

Car(String name, int speed) {
this.name = name;
this.speed = speed;
}
}
17 changes: 0 additions & 17 deletions src/main/java/Formatter.java

This file was deleted.

10 changes: 0 additions & 10 deletions src/main/java/Item.java

This file was deleted.

75 changes: 41 additions & 34 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
}
41 changes: 41 additions & 0 deletions src/main/java/Race.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import java.util.*;

public class Race {
Car[] racers;

Race(Car[] racers) {
this.racers = racers;
}

public void start() {
ArrayList<Integer> distances = calculateDistances(racers);

String winner = calculateWinner(distances);

System.out.printf("The winner is %s", winner);
}

private ArrayList<Integer> calculateDistances(Car[] racers) {
ArrayList<Integer> distances = new ArrayList<>();

for (Car racer : racers) {
distances.add(racer.speed * 24);
}

return distances;
}

private String calculateWinner(ArrayList<Integer> distances) {
int maxDistance = 0;

for (int distance: distances) {
if (distance > maxDistance) {
maxDistance = distance;
}
}

int indexOfWinner = distances.indexOf(maxDistance);

return racers[indexOfWinner].name;
}
}