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

public class Calculator {


public double start() {
ArrayList<Bludo> feedList = new ArrayList<>();
System.out.println("Привет!");
double dolg = 0; // итог калькулятора
// ВВод числа плательщиков
int menCount = skolkoNaroduPlatit();
//System.out.println("принято. Число оплачивающих: " + menCount);
int i = 0;
Scanner scanner = new Scanner(System.in);
boolean vvod = true;

double fullPrice = 0;
while (vvod) {
Bludo bludo = new Bludo();
i++;
System.out.println("Введите название товара № " + i + " или введите 'Завершить': ");
String vvodStr = scanner.nextLine();
vvodStr.trim();
double price = 0;
boolean enteredPrice = false;
if (!vvodStr.toLowerCase().equals("завершить")) {
bludo.name = vvodStr;
// System.out.println("принято. товар введен ");
System.out.println("Введите цену [руб].[коп]:");
price=0;
while (true) {
try {
vvodStr = scanner.nextLine();
price = Double.parseDouble(vvodStr);
if (price > 0) {
bludo.price = price;
fullPrice = fullPrice + price;
System.out.println("Товар '"+bludo.name+"' успешно добавлен на сумму: " + fullPrice + " руб.");
enteredPrice = true;break;
}
else System.out.println("введите цену больше 0 ");

} catch (NumberFormatException e) {
System.out.println("неверный ввод, повторите ");
}
// System.out.println("неправильный ввод, повторите ");
// System.out.print(price);System.out.println("");

// добавление товара в список
}
feedList.add(bludo);

} else vvod = false;


}
int tovarov = feedList.size();

// Итог. Выводим список
if (fullPrice > 0) {

System.out.println(String.format("Итого: %.2f", fullPrice));
for (int t = 0; t < tovarov; t++) {
System.out.println("Добавленные товары: " + feedList.get(t).name);

}
// определим окончание для "рубль"
dolg = fullPrice /(double)menCount;

// String shablon = "Каждый должен заплатить по: %.2f "+pravilno;
// System.out.println(String.format(shablon, dolg));
}
return dolg;
}

public static int skolkoNaroduPlatit() {
boolean notOk = true;
int men = 0;
while (notOk) {
Scanner scanner = new Scanner(System.in);
System.out.println("Сколько человек расплачиваются(2-9)?");
String strMen = scanner.nextLine();

try {
men = Integer.parseInt(strMen.trim());
if ((men > 1) && (men < 10)) {

notOk = false;
} else System.out.println("неверное число " + men);
} catch (NumberFormatException nfe) {
System.out.println("неправильный ввод, повторите ");
}
}
return men;
}

public static String roubleEnd(double itog) {
int roubles = 0;

roubles = (int) itog;
int rouble = roubles - ((int) roubles / 10) * 10;

String pravilno = "";
if (rouble == 1) {
pravilno = "рубль";
}
;
if ((rouble == 0) || (rouble > 4)) {
pravilno = "рублей";
}
;
if ((rouble > 1) && (rouble < 5)) {
pravilno = "рубля";

}


;
return pravilno;
}


static class Bludo {
double price;
String name;
}

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

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Objects;
import java.util.Scanner;
import java.text.DecimalFormat;

public class Main {

public static void main(String[] args) {
System.out.println("Hello world!");
Calculator calculator;
calculator = new Calculator();
// Выясняем сколько платить
double PoSkolkoPlatit=calculator.start();
// выясняем какое окончание у "рубль"
String pravilno= calculator.roubleEnd(PoSkolkoPlatit);
//идем на извращения, дабы поменять точку на запятую.
// функция replace не работает и т.п. тоже не работают
if (PoSkolkoPlatit>0) {
//System.out.println("итог: " + PoSkolkoPlatit);
DecimalFormat myFloatFormatter = new DecimalFormat("#.##");
String dolgStr = myFloatFormatter.format(PoSkolkoPlatit);
int zap = dolgStr.indexOf(",");
String part1 = dolgStr.substring(0, zap);
String part2 = dolgStr.substring(zap + 1, dolgStr.length());

// Выводим итог
System.out.println("Каждый должен заплатить по: " + part1 + "." + part2 + " " + pravilno);

}
}
}
}
2 changes: 2 additions & 0 deletions src/main/java/README.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
main - версия для проверки по правилам задания
mymain - моя версия калькулятора
132 changes: 132 additions & 0 deletions src/main/java/myMain.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
import java.util.Arrays;
import java.util.Scanner;
public class myMain {

public static void main(String[] args) {
Calculator calculator;
calculator = new Calculator();
DebtsData data = new DebtsData(); // данные с долгами
Scanner scanner = new Scanner(System.in);


System.out.println("Привет, мир отдыхающих! ");
System.out.println("Это альтернативный калькулятор ");
data.people = calculator.skolkoNaroduPlatit(); //число плательщиков
//1. Сумма на всех
double naVseh = 0;
System.out.println("введите сумму, которую надо поделить на всех(0-завершить)?: ");

while (true) {
try {
String vvodStr = scanner.nextLine();
naVseh = Double.parseDouble(vvodStr);
break;
} catch (NumberFormatException e) {
System.out.println("неверный ввод, повторите ");
}
}
if (naVseh == 0) return; // выход
double fullSumma=naVseh;
data.fullDebt= data.fullDebt+naVseh;
// double[] itogi = new double[people]; //массив с долгом каждого плательщика
double forEach = naVseh / data.people;
Arrays.fill(data.debt, forEach); // делим поровну сумму на всех
data.printDolgi();
System.out.println("Теперь у каждого плательщика - номер от 1 до " + data.people);
int i = 1;
boolean fullEnd = false;// маркер окончания ввода
double summa = 0;
while (!fullEnd) {

while (true) {
System.out.println("Сумма №" + i + ", которую надо поделить на некоторых (0-завершить): ");
String vvodStr = scanner.nextLine();
summa = 0;
if (vvodStr.equals("0")) {
fullEnd = true;
System.out.println(" введено 0. ");break;
}
else {
try {
summa = Double.parseDouble(vvodStr);
System.out.print(summa);
System.out.println(" введено");
break;
} catch (NumberFormatException e) {
System.out.println("неверный ввод, повторите ");

}
}
}

boolean endVvod = false; // маркер окончания ввода товаров для отдельных плательщиков
int s;
// System.out.println(fullEnd);
while ((!endVvod)&&(!fullEnd)) { // теперь считаем отдельные долги
s = 0;
if (fullEnd) break; // завершаем подсчет ибо введен 0
System.out.println("на кого делить сумму №" + i + " ("+summa +"), номера плательщиков через запятую (например 1,2,5 или 1-2-5)?: ");
int[] wHoPay4 = new int[10]; //массив с номерами плательщиков
String spisok = scanner.nextLine();
spisok.trim();
boolean notWrong = false;
for (int t = 0; t < spisok.length(); t = t + 2) { //поиск плательщиков в строке


char numStr = spisok.charAt(t);
int num = numStr - '0';
try {

if ((num > 0) && (num < 10)) {
s = s + 1;
wHoPay4[s] = num;
System.out.println("pos" + t + " num " + num);
notWrong=true;
} else {
System.out.println("неверное число " + num);
notWrong = false;
}
} catch (NumberFormatException nfe) {
System.out.println("неправильный ввод, повторите ");
notWrong = false;
}

}


if (notWrong) {
System.out.println("Позиция № " + i + " введена успешно");
data.fullDebt= data.fullDebt+summa;
double newDolg = summa / s;
System.out.println(String.format("долг по товару %s с плательщиков по %.2f ",i, newDolg));
System.out.println(String.format("общий долг: %.2f ", data.fullDebt));
for (int d = 1; d <= s; d++) {
data.debt[wHoPay4[d]] = data.debt[wHoPay4[d]] + newDolg;
//System.out.println(String.format("долг по товару с плательщиков по %.2f ", newDolg));
endVvod = true;
}
data.printDolgi();
i++;
}

}
}
System.out.println(String.format("Итого платить %.2f ", data.fullDebt));
data.printDolgi();


}


}

class DebtsData{
double fullDebt; // общий долг
int people; //число плательщиков
double[] debt = new double[10]; // долги
public void printDolgi (){
for(int i=1;i<=this.people;i++){
System.out.println(String.format("Плательщик № %S платит %.2f " ,i,this.debt[i]));
}
}
}