Repository navigation
Conversation
| System.out.println("Введите название товара"); | ||
| String productName = input.next(); | ||
| if (k!=0) { | ||
| names = names + " " + productName; |
There was a problem hiding this comment.
Вместо names = names + ... можно писать names += ...
| String stoper = ""; | ||
| double sum = 0; | ||
| int k = 0; | ||
| while (stoper!="завершить") { |
There was a problem hiding this comment.
Поскольку есть проверка на это условие в конце цикла, тут можно просто написать while(true)
| if (quantity <= 1) { | ||
| System.out.println("Неверный ввод!"); | ||
| System.out.println("Вы ввели неправильное количество. Введите заново количество человек, на которых необходимо разделить счёт"); | ||
| quantity = input.nextInt(); |
There was a problem hiding this comment.
Лучше этот if перенести в try, после считывания quantity. Если введено >0 - break, иначе - считать число снова в цикле. Сейчас, если пользователь введет второй раз некорректное число, из-за nextInt приложение упадет
| String stoper = ""; | ||
| double sum = 0; | ||
| int k = 0; | ||
| while (stoper != "завершить") { |
There was a problem hiding this comment.
Тут можно использовать while (true)
| Object[] arr = new Object[3]; | ||
| arr[0]=names; | ||
| arr[1]=sum; | ||
| arr[2]=k; |
There was a problem hiding this comment.
Лучше создать класс с 3 полями - names, sum и k (только выбрать более понятное имя) и возвращать здесь элемент этого класса. Так извне этого метода даже другой разработчик поймет, что значит каждое из полей. А сейчас только смотря в этот метод, можно понять, что возвращается в качестве 1, 2 и 3 элемента массива
| } else if ((answer % 10 >= 2) & (answer % 10 <= 9)) { | ||
| System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рублей"); | ||
| } else { | ||
| System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рублей"); |
There was a problem hiding this comment.
Код System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result +... повторяется в каждой ветке, кроме слова рубль, лучше код вынести после if-else, оставив в нем только определение слова
| else if ((answer % 10 >= 5) & (answer % 10 <= 9) & (answer <= 10) | (answer % 10 == 0)){ | ||
| System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рублей"); | ||
| } else if ((answer % 10 >= 2) & (answer % 10 <= 9)) { | ||
| System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рублей"); |
There was a problem hiding this comment.
Результат в этой ветке и выше такой же, как в ветке else, значит все три ветки можно объединить в else (то есть эту и верхнюю просто убрать)
| } | ||
| double answer = sum / quantity; | ||
| String result = String.format("%.2f", answer); | ||
| if ((answer < 2) & (answer >= 1)) { |
There was a problem hiding this comment.
Одновременно меньше 2 и больше или равно 1 только одно число - это 1, значит можно просто написать answer == 1
There was a problem hiding this comment.
там же дробные значения между 1 и 2 ещё есть
There was a problem hiding this comment.
Да, действительно, но для правильного определения окончания лучше отбросить дробную часть (поскольку слово рубль зависит только от целой части числа), например, приведя к int число, и тогда дробных значений не будет
| else if ((answer % 10 >= 2) & (answer % 10 <= 4) & (answer <= 10)) { | ||
| System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рубля"); | ||
| } | ||
| else if ((answer % 10 >= 5) & (answer % 10 <= 9) & (answer <= 10) | (answer % 10 == 0)){ |
There was a problem hiding this comment.
Выражение answer % 10 считается много раз, можно посчитать его один раз, записать в переменную и использовать ее
| if ((answer < 2) & (answer >= 1)) { | ||
| System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рубль"); | ||
| } | ||
| else if ((answer % 10 >= 2) & (answer % 10 <= 4) & (answer <= 10)) { |
There was a problem hiding this comment.
Лучше использовать && вместо &, это называется ленивым логическим И, в случае получения слева false дальше выражение считаться не будет, поскольку всё выражение целиком точно будет false и смысла считать дальше нет. Для логического или аналогично - ||
No description provided.