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 README.md
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
# Пустой репозиторий для работы с Java кодом в Android Studio
Проектная работа №1
cтудента курса по Android-разработке (Когорта №10)
Станислава Евстигнеева
32 changes: 32 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
public class Calculator {

// поля
private double amount;
private int peopleQuantity;
private double calculationResult;


// методы
public void setAmount (double totalAmount) {
amount = totalAmount;
}
public double getAmount() {
return amount;
}

public void setPeopleQty (int peopleQty) {
peopleQuantity = peopleQty;
}
public int getPeopleQty() {
return peopleQuantity;
}

public void calculate () {
calculationResult = amount/peopleQuantity;
}

public double getCalculationResult() {
return calculationResult;
}

}
35 changes: 35 additions & 0 deletions src/main/java/Input.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import java.util.Scanner;

public class Input {
//поля
private int peopleQty;

// Методы
public void enterPeopleQty() {
Scanner scanP = new Scanner(System.in);
scanP.useDelimiter("\n");

while (true) {
try {
System.out.println("На скольких человек следует разделить счёт? Введите количество: ");
int quantity = scanP.nextInt(); // считывание количества человек с клавиатуры
if (quantity > 1) {
peopleQty = quantity;
System.out.println("Хорошо, давайте разделим счёт на " + peopleQty + "-х человек");
break;
} else {
System.out.println("Ошибка. Для корректной работы программы колличество человек должно быть больше 1. Пожалуйста введите повторно");
}
} catch (Exception e2) {
System.out.println("Ошибка ввода. Пожалуйста введите число, равное количеству человек");
scanP.next();
}
}

}

public int getPeopleQty() {
return peopleQty;
}

}
42 changes: 40 additions & 2 deletions src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,44 @@

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
Scanner scanner = new Scanner(System.in);

// Вввод количества человек с проверкой ввода
Input peopleQuantity = new Input();
peopleQuantity.enterPeopleQty();

// После ввода количества человек создаем список товаров
ProductList productList = new ProductList();

// Цикл ввод товаров в список
while (true) {
System.out.println("Введите название товара: ");
productList.setProductName();
System.out.println("Введите стоимость этого товара в формате 'рубли,копейки' (например: 123,45): ");
productList.setProductPrice();
productList.updateList();
System.out.println("Вы хотите добавить ещё один товар?\n-Для продолжения введите любой символ\n-Если хотите закончить и получить результат, введите слово \"Завершить\"");
String userAnswer = scanner.next();
if (userAnswer.equalsIgnoreCase("завершить")) {
break;
}
}
System.out.println(productList.getList() + "Общей стоимостью: " + String.format("%.2f", productList.getTotalAmount()) + " руб.\n");


// Создаем объект калькулятор для расчёта суммы для каждого человека
Calculator calculator = new Calculator();
calculator.setAmount(productList.getTotalAmount());
calculator.setPeopleQty(peopleQuantity.getPeopleQty());
calculator.calculate(); // метод расчета суммы для каждого человека


// Создаем объект result для вывода правильного падежа слова "рубль" в итоговом сообщении
Result result = new Result();
result.setRubValue(calculator.getCalculationResult());
result.format();
String resultTemplate = "Каждый из " + peopleQuantity.getPeopleQty() + "-х человек должен заплатить %.2f %s";
System.out.println(String.format(resultTemplate, calculator.getCalculationResult(), result.getRubFormat()));
System.out.println("Работы программы завершена.");
}
}
72 changes: 72 additions & 0 deletions src/main/java/ProductList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/* класс описывает объект "Список товаров", который хранит все товары, введенные пользователем,
стоимость товаров и общую сумму */


import java.util.Scanner;
public class ProductList {

// поля
private String name; // наименование товара
private double price; // стоимость товара
private String list = "Добавленные товары:\n"; // переменная для хранения списка товаров
private double totalAmount = 0; // переменная для хранения общей стоимости всех товаров



// методы
public void setProductName() {
Scanner scanName = new Scanner(System.in);
while(true) {
scanName.useDelimiter("\n");
String product = scanName.next();
if (product.isEmpty()) {
System.out.println("Поле не может быть пустым. Пожалуйста, введите наименование товара");
}
else {
name = (product.substring(0,1).toUpperCase()+product.substring(1)).trim(); // формат имени товара - с заглавной буквы
break;
}
}
}
public String getProductName() {
return name;
}

public void setProductPrice() {
Scanner scanPrice = new Scanner(System.in);
while (true) {
try {
double productPrice = scanPrice.nextDouble();
if (productPrice >= 0) {
price = productPrice;
break;
} else {
System.out.println("Ошибка. Стоимость не может быть отрицательной. Введите стоимость повторно");

}
} catch (Exception e) {
System.out.println("Ошибка ввода. Пожалуйста введите стоимость товара повторно, отделяя копейки запятой (Пример: 123,45)");
scanPrice.next();
}
}
}

public double getProductPrice() {
return price;
}

public void updateList() {
list = list + "- " + name + " : " + String.format("%.2f", price) + " руб.\n"; //
totalAmount = totalAmount + price;
System.out.println("Спасибо, Вы ввели товар: " + name + " стоимостью " + String.format("%.2f", price) + " руб.\n");
}

public String getList() {
return list;
}

public double getTotalAmount() {
return totalAmount;
}

}
58 changes: 58 additions & 0 deletions src/main/java/Result.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
public class Result {

/// поля
private double rubValue; // итоговое значение вычислений
private String rubFormat; // переменная для хранения правильной формы слова "рубль"

// методы

public void setRubValue(double rub) {
rubValue = rub;
}

public void format() {
double rubRounded = Math.floor(rubValue);
if (rubValue >= 0 && rubValue <21) {
if (rubValue==0) {
rubFormat = "рублей";
} else if (rubValue == 1) {
rubFormat = "рубль";
} else if (rubValue >= 2 && rubValue <5) {
rubFormat = "рубля";
} else if (rubValue >=5) {
rubFormat = "рублей";
}
} else if (rubValue >= 21 && rubValue <100) {
if (rubRounded%10 == 1) {
rubFormat = "рубль";
} else if (rubRounded%10 > 1 && rubRounded%10 <5) {
rubFormat = "рубля";
} else if (rubRounded%10 >=5 || rubRounded%10 == 0) {
rubFormat = "рублей";
}
} else if (rubValue >=100) {
if (rubRounded % 100 == 0) {
rubFormat = "рублей";
} else if (rubRounded % 100 == 1) {
rubFormat = "рубль";
} else if (rubRounded % 100 > 1 && rubRounded % 100 <5) {
rubFormat = "рубля";
} else if (rubRounded % 100 >=5 && rubRounded % 100 < 21) {
rubFormat = "рублей";
} else {
if (rubRounded%10 == 1) {
rubFormat = "рубль";
} else if (rubRounded%10 > 1 && rubRounded%10 <5) {
rubFormat = "рубля";
} else if (rubRounded%10 >=5 || rubRounded%10 == 0) {
rubFormat = "рублей";
}
}

}
}

public String getRubFormat() {
return rubFormat;
}
}