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
79 changes: 79 additions & 0 deletions src/main/java/Calculator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import java.util.ArrayList;
import java.util.Scanner;

public class Calculator {

private double sum = 0;
private int number;

ArrayList<Product> goods = new ArrayList<>();
public void setNumber()
{
Scanner scanner = new Scanner(System.in);
String temp;
System.out.println("На скольких человек необходимо разделить счёт?");
while (true) {
try
{
temp = scanner.nextLine().trim();
number = Integer.parseInt(temp);
if (number <= 1 || !temp.matches("^[0-9]+$"))
{
throw new Exception("Неверное значение! Попробуйте еще раз.");
}
break;
}
catch (Exception e)
{
System.out.println("Неверное значение! Попробуйте еще раз.");
continue;
}
}
}
public void setProducts()
{
Scanner scanner = new Scanner(System.in);

while (true) {
//1) Запросите у пользователя название товара и его стоимость. Стоимость должна быть в
// формате рубли.копейки, например 10.45 или 11.40.

Product product = new Product();
product.setProduct();
sum += product.getPrice();
goods.add(product);

System.out.println("Хотите ли Вы добавить еще один товар?");
String answer = scanner.nextLine();
if (answer.equalsIgnoreCase("завершить"))
{
this.printAll();
break;
}
}
}

public void printAll()
{
Formatter f = new Formatter();

System.out.println("Добавленные товары:");
for (Product g: goods)
{
int r = (int)(g.getPrice() - (g.getPrice() % 1));
String rr = f.getRubles(r);

System.out.println(g.getName() + " " + g.getPrice() + rr);
}
System.out.println("Каждый человек должен заплатить " +
String.format("%.2f", sum / number) + f.getRubles((int)(sum / number)) + ".");
}

public void addProduct(Product p)
{
goods.add(p);
sum += p.getPrice();
}
public boolean deleteProduct(Product p) { return goods.remove(p); }
public double getSum() { return sum; }
}
49 changes: 49 additions & 0 deletions src/main/java/Formatter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import java.util.ArrayList;

public class Formatter
{
public String getRubles(int r)
{
if ((r % 10) == 1)
return " рубль ";
else if ((r % 10)>=2 && (r % 10)<=4)
return " рубля ";
else
return " рублей ";
}
public String[] getRublesAndKopecks(double price)
{
int rInNum; String rInWords;
int kInNum; String kInWOrds;
String partOne;
String partTwo;

String[] parsesParts = String.valueOf(price).split("\\.");
rInNum = Integer.parseInt(parsesParts[0]);
if (!parsesParts[1].substring(0,1).equals("0"))
{
kInNum = Integer.parseInt(parsesParts[1])*10;
}
else
{
kInNum = Integer.parseInt(parsesParts[1]);
}

if ((rInNum % 10) == 1)
rInWords = " рубль ";
else if ((rInNum % 10)>=2 && (rInNum % 10)<=4)
rInWords = " рубля ";
else
rInWords = " рублей ";

if ((kInNum % 10) == 1)
kInWOrds = " копейка ";
else if ((kInNum % 10)>=2 && kInNum % 10 <=4)
kInWOrds = " копейки ";
else
kInWOrds = " копеек ";

String[] res = {Integer.toString(rInNum), rInWords, Integer.toString(kInNum), kInWOrds};
return res;
}
}
8 changes: 7 additions & 1 deletion src/main/java/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import java.util.Enumeration;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
Calculator goodsCalc = new Calculator();
//количество человек
goodsCalc.setNumber();
//добавление товаров
goodsCalc.setProducts();
}
}
64 changes: 64 additions & 0 deletions src/main/java/Product.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import java.util.ArrayList;
import java.util.Scanner;

public class Product {
private String name;
private double price;
public void setProduct()
{
Scanner scanner = new Scanner(System.in);

while(true) {
System.out.println("Введите название товара:");
name = scanner.nextLine().trim(); // исправлено
if (name == null || name.isEmpty())

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

можно вместо trim() + isEmpty использовать isBlank()

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

круто, спасибо! но убрать в данном случае пробелы - хорошо) а так буду иметь в виду.

{
System.out.println("Неверное значение! Попробуйте еще раз.");
}
else {
break;
}
}
System.out.println("Введите стоимость товара:");
String temp;
while(true)
{
try
{
temp = scanner.nextLine().trim();
price = Double.parseDouble(temp);
if (price <= 0) {
throw new Exception("Некорректные данные!");
}
Formatter f = new Formatter();
String[] s = new String[4];
s = f.getRublesAndKopecks(price);

System.out.println(String.format("Товар %s с ценой %s %s %s %s успешно добавлен!", name, s[0], s[1], s[2], s[3]));
break;
}
catch (Exception e)
{
System.out.println("Неверное значение! Попробуйте еще раз.");
}

}
}

public void setName(String n)
{
name = n;
}
public void setPrice(double c)
{
price = c;
}
public String getName()
{
return name;
}
public double getPrice()
{
return price;
}
}