Conversation
Домашнее задание Спринт №2 29/12/22
Домашнее задание Спринт №2 29/12/22
src/main/java/Main.java
Outdated
| // вы не должны ограничиваться только классом Main и можете создавать свои классы по необходимости | ||
| System.out.println("Привет Мир"); | ||
| Counter counter = new Counter(); | ||
| counter.shopCalc(); // запуск кол-ва человек и калькулятора корзины |
There was a problem hiding this comment.
⏫ Так как функция shopCalc статическая, то для обращения к ней не требуется экземпляр класс. Можно заменить обе строки на Counter.shopCalc();
src/main/java/Counter.java
Outdated
| int persons = 0; | ||
| System.out.println("Введите количество человек"); | ||
| while (persons <= 1) { | ||
| persons = scanner.nextInt(); |
There was a problem hiding this comment.
int, то при некорректном вводе, например, букв или не целого числа, приложение упадет.
src/main/java/Counter.java
Outdated
|
|
||
| public class Counter { | ||
| // создал класс как считалку, чтобы не захламлять main, но устроил бедлам здесь | ||
| // после автовыравнивания (альт + ктрл + L) стало немного получше |
src/main/java/Counter.java
Outdated
| public class Counter { | ||
| // создал класс как считалку, чтобы не захламлять main, но устроил бедлам здесь | ||
| // после автовыравнивания (альт + ктрл + L) стало немного получше | ||
| // да-да.. тему "Декомпозиция" я вообще не усвоил, а сейчас боюсь тут всё менять, сдам так В) |
src/main/java/Counter.java
Outdated
| // я честно не понял как сделать через floor(), мы разве проходили такое? | ||
| // пришлось гуглить как перевести цифры в строку и обратно | ||
| String rubles = String.valueOf(otvet); | ||
| if (rubles.endsWith("0")) { // endsWith нашел в контекстном меню, хз что это но сработало -_- |
There was a problem hiding this comment.
src/main/java/Counter.java
Outdated
| int persons = pers(); | ||
| System.out.println("Выберите себе игрушку из списка:"); | ||
| System.out.println("1 - iPhone X\n2 - iPad 8\n3 - iPods 3\n0 или Завершить - Выход"); | ||
| while (price != -1) { // бесконечный цикл, с выходом через "завершить" |
There was a problem hiding this comment.
⏫ Так как условие price != -1 выполняется всегда и никогда не произойдет обратного, то можно просто while (true)
src/main/java/Counter.java
Outdated
| break; | ||
| } | ||
| double bWord = Double.parseDouble(String.valueOf(rubles)); | ||
| System.out.println(String.format("Каждый из вас должен заплатить: %.2f рубль\n", bWord)); |
There was a problem hiding this comment.
⏫ Можно заменить на System.out.printf и в других местах тоже
src/main/java/Counter.java
Outdated
| double price = 0; | ||
| int persons = pers(); | ||
| System.out.println("Выберите себе игрушку из списка:"); | ||
| System.out.println("1 - iPhone X\n2 - iPad 8\n3 - iPods 3\n0 или Завершить - Выход"); |
There was a problem hiding this comment.
⏫ Можно еще учитывать, чтобы при вводе цены товара копейки составляли 2 знака после запятой: 10,15 - можно, 10,1533 - некорректный ввод.
| public static double enterPrice() { // ввод стоимости товара | ||
| Scanner scanner = new Scanner(System.in); | ||
| System.out.println("ВВедите стоимость товара:"); | ||
| if (scanner.hasNextDouble()) { |
There was a problem hiding this comment.
| } | ||
| // конец | ||
|
|
||
| // принтф - прикольно конечно, но читать как-то не очень удобно, в отличии от нескольких принтлн |
There was a problem hiding this comment.
Так можно было несколько printf сделать) Смысл был убрать String.format в каждом вызове
| int rublSum = (int) Math.floor(sum); | ||
| String rublStr = String.valueOf(rublSum); | ||
| if ((rublStr.endsWith("2")) || (rublStr.endsWith("3")) || (rublStr.endsWith("4"))) { | ||
| rubleySumma = "рубля"; |
There was a problem hiding this comment.
Стоит брать последние 2 цифры результата и проверять на то, что это лежит в пределе 5-19 (рублей), и если нет, то уже проверять просто последнюю цифру: 0 рублей, 1 рубль, 2-4 рубля и остальное - рублей. Вроде, как-то так, но лучше перепроверить меня)
|
|
||
| public static String enterName() { // ввод названия товара | ||
| Scanner scanner = new Scanner(System.in); | ||
| while (true) { |
There was a problem hiding this comment.
Тут, кстати, нет необходимости в цикле. Здесь всегда одна итерация, которая завершается return
| System.out.println("Закрытие программы"); | ||
| //break; | ||
| System.exit(0); // break не закрывает программу, а возобновляет цикл видимо изза return enterName() | ||
| } // буду благодарен, если подскажите как гасить приложуху без System.exit() :) |
There was a problem hiding this comment.
В данной реализации можно попробовать сделать глобальный флаг, который будет проверятся во внешнем цикле и в нем уже будет вызываться break. А здесь устанавливать его в true и делать return какой-нибудь строки, напирмер, пустой, так как нам уже не важно будет, что вернет этот метод
No description provided.