Repository navigation
Expand file tree
/
Copy pathMain.java
More file actions
158 lines (127 loc) · 6.66 KB
/
Copy pathMain.java
File metadata and controls
158 lines (127 loc) · 6.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int i;
int ru;
float cost;
//float sum=0;
double temp;
int kolvo;
int chel;
String schet="";
String name = "";
//String ru="";
//Запрос количества персон?");
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("Какое количество персон?");
if (scanner.hasNextInt()) {
chel=scanner.nextInt();
if (chel<1) {System.out.println("Cлишком мало гостей");}
else if(chel==1) {System.out.println("Платить придется самому, или уточните ");}
else {System.out.println("счет будет разделен на " + chel); break;}
}
else if (scanner.hasNextFloat()) {System.out.println("Все гости должны быть целыми");scanner.next();}
else {System.out.println("ВВедите численное значение");scanner.next();}
}
// Формирование строкового списка заказа и отправка на расчет
i=0;
Calc calc= new Calc(chel,0,0,"");
while (true) {
i++;
System.out.println("ВВедите наименование блюда или \"Завершить\"");
//scanner = new Scanner(System.in);
name = scanner.next();
scanner.nextLine();
if (name.equalsIgnoreCase("Завершить")) {
System.out.println(name);
break;}
//System.out.println("ВВедите Цену блюда");
while (true) {// Мучать пока не введут число
System.out.println("ВВедите Цену блюда");
if (scanner.hasNextFloat()) {
cost = scanner.nextFloat();
//
temp = 0.01 * Math.round(cost * 100); //Отсекаем математическим округлением все что дальше копеек
//System.out.println(temp);
cost = (float) temp;
break;}
else {scanner.next();}
}
while (true) {// Мучать пока не введут целое число
System.out.println("ВВедите количество одинаковых блюд");
if (scanner.hasNextInt()) {
kolvo = scanner.nextInt();
break;}
else {scanner.next();}
}
//System.out.println("ВВедите количество одинаковых блюд");
//kolvo = scanner.nextInt();
// sum=sum+cost*kolvo; //Без классовый механизм расчета суммы
//Формирование строки
schet= schet + "Пункт меню № "+i+ "-- " +name + ", по цене "+ cost+ " в количестве "+kolvo+" шт."+"\n";
calc.add(cost,kolvo);//Отправляем очередную строчку на просчет.
calc.point= calc.point+" * "+name; // Добавляем в атрибут наименования пункта меню еще одно наименование блюда символом разделителем
System.out.println ("Добавлен Пункт меню № "+i+ "- " +name + ", по цене "+ cost+" "+rub(cost)+" в количестве "+kolvo+" шт.");
calc.sRila=sverka (calc.chel,calc.summ,calc.sRila); //Уточнение расчета до копеечки
//System.out.println(calc.sRila);
}
System.out.println("Итого");
System.out.println("Добавленные товары:");
System.out.println(schet );
System.out.println("Общая сумма по счету"+String.format("%.2f",calc.summ));
System.out.print("С каждого по "+String.format("%.2f",calc.sRila ));
//ru= (int) (Math.floor(calc.sRila)-10*Math.floor(calc.sRila/10)); //выясняем численный крайний рубль
System.out.println(" "+rub(calc.sRila));
// вывод информации какая сумма с Человека
if (calc.summ!= (calc.sRila* calc.chel)) {System.out.println("И на чай оставим "+String.format("%.2f",(calc.sRila* calc.chel-calc.summ) ));}
scanner.close();//Закрываем Scanner по завершении работы.
//k=0;
// while (k<i) {
// i++;
// System.out.println("Вывод" + schet);
// }
//public static float sverka(int a,float b,float c) {
// System.out.println("Пойду-ка сделаю себе кофе")
//}
}
private static float sverka(int chel, float summ, float sRila) {
while (summ>chel*sRila) { sRila= (float) (sRila+0.01);}
return sRila;
}
private static String rub(float r) { //Выбор окончания
int ru;
ru= (int) (Math.floor(r)-10*Math.floor(r/10)); //выясняем численный крайний рубль
switch (ru){
case 1 : return "рубль.";
case 2 :
case 3 :
case 4 : return "рубля.";
default : return "рублeй.";
}
}
public static class Calc {
//int i;
int chel;//количество персон
int kol;// кол-во одинаковых блюд
String point;//наименование пункта меню
float price;//Цена пункта меню
double t=0;
float sRila=0;
float summ=0 ;
///Calc(int n, String point, float price, int kol) {
Calc( int che,float pri, int k,String poi) {
chel = che; //наименование пункта меню
price = pri; //Цена пункта меню
kol = k; // кол-во одинаковых блюд
point=poi;//Название пункта менею
}
void add(float price, int kol){
summ= summ+price*kol; //Цена пункта меню
t=summ/chel; // Такое же мат округление
t = 0.01 * Math.round(t * 100);
sRila=(float) t; //Фиксация текущей величины сброса
// this kol = kol;
}
}
}