Проектная работа 1, Игорь Зацепилин 4я когорта Android-разработчик#1
Проектная работа 1, Игорь Зацепилин 4я когорта Android-разработчик#1IgorZatsepilin wants to merge 5 commits intomainfrom
Conversation
src/main/java/Main.java
Outdated
|
|
||
| System.out.println("Введите стоимость товара в формате: 'рубли.копейки' [10.45, 11.40]"); | ||
| double price = scanner.nextDouble(); | ||
| } while (peopleAmount <= 1); // окончание цикла ввода и проверки кол-ва человек |
There was a problem hiding this comment.
Лучше выносить такие большие логические блоки типа ввода и обработки количества людей, расчета стоимости продукта, вывода результата в отдельные методы, потому что один сплошной код в методе main снижает читаемость кода.
src/main/java/Main.java
Outdated
| peopleAmount = scanner.nextInt(); | ||
| if (peopleAmount == 1) { | ||
| System.out.println("Ошибка! Количество человек не может быть равно 1, так как в этом случае нет смысла ничего считать и делить."); | ||
| System.out.println("Введите корректное число. На скольких человек необходимо разделить счёт?"); |
There was a problem hiding this comment.
Такие подряд идущие println лучше объединять в один вызов println, делая перенос строки при помощи \n
src/main/java/Main.java
Outdated
| Scanner scannerPrice = new Scanner(System.in); | ||
| while (!scannerPrice.hasNextDouble()) { //проверка на корректность введенного формата Дробное значение | ||
| System.out.println("Введенное значение некорректно."); | ||
| System.out.println("Введите стоимость товара в формате 'рубли.копейки', например, '10.45':"); |
There was a problem hiding this comment.
Одинаковые повторяющиеся строки типа этой лучше выносить в отдельную переменную и подставлять её там, где нужно - это избавить от нужны менять при необходимости все строки по одной.
src/main/java/Main.java
Outdated
| newProduct.sumPerPerson = 130; // вычисляем сумму на человека | ||
| //определяем падеж слова "рубль": | ||
| newProduct.padezh = Product.definePadezh(newProduct.sumPerPerson, newProduct.twoLastDigits, newProduct.oneLastDigit, newProduct.bezDrobnoyInt); | ||
| System.out.println("Сумма, которую должен заплатить каждый человек, равна: " + String.format("%.2f", newProduct.sumPerPerson) + newProduct.padezh); |
There was a problem hiding this comment.
Таких огромных фрагментов кода тоже стоит избегать
There was a problem hiding this comment.
каких именно огромных фрагментов? Ты про вывод строки с одной надписью и двумя переменными? Мне кажется я наоборот максимально упростил здесь код, разве нет?
There was a problem hiding this comment.
Тесты можно вынести в отдельный метод, например, и вызывать в main.
src/main/java/Main.java
Outdated
| padezhVar = 3;; | ||
| } | ||
|
|
||
| if ((twoLastDigits > 4) & (twoLastDigits < 21)) { |
There was a problem hiding this comment.
Вместо длинной вереницы if'ов лучше также использовать конструкцию switch-case
There was a problem hiding this comment.
в данном случае использование switch невозможно, так как в case нельзя передать диапазон значений <>
There was a problem hiding this comment.
В таком виде да, но можно написать метод, в который мы просто передаем уже округленную сумму, например так:
public static String changeCase(int price) {
if ((price% 100) >= 11 && (price% 100) <= 14) {
return "рублей";
} else {
switch (amount % 10) {
case 2:
case 3:
case 4:
return "рубля";
case 1:
return "рубль";
default:
return "рублей";
}
}
}
src/main/java/Main.java
Outdated
| } | ||
|
|
||
|
|
||
| return " error."; |
There was a problem hiding this comment.
Лучше перенести в качестве default значения в switch-case:
default:
return " error.";
Также рекомендую после написания каждого фрагмента кода использовать хоткей Alt + Ctrl + L - он форматирует код, приводя его к единому красивому формату
Проектная работа 1, Игорь Зацепилин 4я когорта Android-разработчик