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
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

123 changes: 123 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,10 @@ repositories {

dependencies {
}

if (hasProperty('buildScan')) {
buildScan {
termsOfServiceUrl = 'https://gradle.com/terms-of-service'
termsOfServiceAgree = 'yes'
}
}
75 changes: 75 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import java.util.Scanner;

public class Calculator {

static Scanner scanner = new Scanner(System.in);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Все поля и методы класса лучше делать не статическими (убрать static у всех), в этом нет необходимости. А при вызове метода в Main создавать объект класса:

        Calculator calc = new Calculator();
        calc.printResult(numberOfGuests);

static String userInput = null;
static String productName;
static String allProductsList = "Добавленные товары:";
static float productCost = 0.0F;
static float allProductsCost = 0.0F;
static float personalAmount = 0.0F;
static String checkedNumber = null;

static void printResult(int numberOfGuests) {
while (!"ЗАВЕРШИТЬ".equalsIgnoreCase(userInput)) {// цикл продолжается до ввода слова "заврешить" игнорируя регистр букв
System.out.println("Введите название товара и его цену.\nТовар: ");
productName = scanner.next();
allProductsList = allProductsList + "\n" + productName;
System.out.println("Введите стоимость: ");
checkedNumber = scanner.next();

while (true) {// цикл проверяет число ли ввёл пользователь и не является ли оно отрицательным
if (!isItaNumber(checkedNumber)) {
System.out.println("Бип, ошибка. Это не число, либо вы в качестве делителя используете запятую вместо точки.\nПопробуйте ещё раз. Введите цену: ");
checkedNumber = scanner.next();
} else if (!isItPositive(productCost = Float.parseFloat(checkedNumber))) {
System.out.println("Бип, ошибка. Цена не может быть отрицательной!\nПопробуйте ещё раз. Введите цену: ");
checkedNumber = scanner.next();
} else {

break;
}
}

allProductsCost += productCost;
System.out.println("Вы успешно добавили " + productName + " за " + String.format("%.2f", productCost) + " рублей.\nЕсли хотите завершить, наберите \"Завершить\" и нажмите \"enter\".\nЕсли хотите добавить ещё один товар, введите любой символ или слово и нажмите \"enter\".");
userInput = scanner.next();
}
String rubleEnding = getRubleEnding((int) Math.floor(allProductsCost)); // выясняем верное окончание слова "рубль" для общей суммы заказа
System.out.println(allProductsList + "\nОбщая сумма: " + String.format("%.2f", allProductsCost) + rubleEnding);
personalAmount = allProductsCost / numberOfGuests;
String personalRubleEnding = getRubleEnding((int) Math.floor(personalAmount));// выясняем верное окончание слова "рубль" для суммы отдельного гостя
System.out.println("Каждому гостю необходимо заплатить: " + String.format("%.2f", personalAmount) + personalRubleEnding);

}


private static boolean isItPositive(float productCost) {// проверяем не является ли число отрицательным
return productCost >= 0;
}

private static boolean isItaNumber(String checkedNumber) {// проверяем число ли ввёл пользователь

return checkedNumber.matches("-?\\d+(\\.\\d+)?");
}

public static String getRubleEnding(int wholeRubles) {// подбираем правльное окончание слову "рубль"
int preLastDigit = wholeRubles % 100 / 10;
if (preLastDigit == 1) {
return " рублей.";
} else {

switch (wholeRubles % 10) {
case 1:
return " рубль.";
case 2:
case 3:
case 4:
return " рубля.";
default:
return " рублей.";
}
}
}
}
25 changes: 22 additions & 3 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
// ваш код начнется здесь
// вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости
System.out.println("Привет Мир");

int numberOfGuests = getNumberOfGuests();
Calculator.printResult(numberOfGuests);

}

static int getNumberOfGuests() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Введите количество гостей.");
int number = scanner.nextInt();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Пользователь может ввести на вопрос про количество человек вместо целого числа строку, и приложение упадет. Для стоимости товаров ты обрабатываешь такую ситуацию, стоит добавить обработку и для количества людей, чтобы приложение не падало/ Можешь использовать try-catch или hasNextInt

if (number == 1) {
System.out.println("Количество гостей дожно быть не менее 2-х человек. Найдите кого-нибудь, с кем можно разделить счёт.");
} else if (number < 2) {
System.out.println("Количество гостей не может быть меньше 1. Вероятно вы ошиблись.");
} else {
return number;
}

}
}
}