Skip to content

everything should work - #1

Merged
zhek1chan merged 5 commits into
mainfrom
dev
Jan 15, 2023
Merged

zhek1chan merged 5 commits into
mainfrom
dev

Conversation

@zhek1chan

Copy link
Copy Markdown
Owner

No description provided.

Comment thread src/main/java/Main.java Outdated
System.out.println("Введите название товара");
String productName = input.next();
if (k!=0) {
names = names + " " + productName;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вместо names = names + ... можно писать names += ...

Comment thread src/main/java/Main.java Outdated
String stoper = "";
double sum = 0;
int k = 0;
while (stoper!="завершить") {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Поскольку есть проверка на это условие в конце цикла, тут можно просто написать while(true)

@zhek1chan
zhek1chan merged commit 7a2acae into main Jan 15, 2023
Comment thread src/main/java/Main.java
if (quantity <= 1) {
System.out.println("Неверный ввод!");
System.out.println("Вы ввели неправильное количество. Введите заново количество человек, на которых необходимо разделить счёт");
quantity = input.nextInt();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше этот if перенести в try, после считывания quantity. Если введено >0 - break, иначе - считать число снова в цикле. Сейчас, если пользователь введет второй раз некорректное число, из-за nextInt приложение упадет

Comment thread src/main/java/Main.java
String stoper = "";
double sum = 0;
int k = 0;
while (stoper != "завершить") {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут можно использовать while (true)

Comment thread src/main/java/Main.java
Object[] arr = new Object[3];
arr[0]=names;
arr[1]=sum;
arr[2]=k;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше создать класс с 3 полями - names, sum и k (только выбрать более понятное имя) и возвращать здесь элемент этого класса. Так извне этого метода даже другой разработчик поймет, что значит каждое из полей. А сейчас только смотря в этот метод, можно понять, что возвращается в качестве 1, 2 и 3 элемента массива

Comment thread src/main/java/Main.java
} else if ((answer % 10 >= 2) & (answer % 10 <= 9)) {
System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рублей");
} else {
System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рублей");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Код System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result +... повторяется в каждой ветке, кроме слова рубль, лучше код вынести после if-else, оставив в нем только определение слова

Comment thread src/main/java/Main.java
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 + " рублей");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Результат в этой ветке и выше такой же, как в ветке else, значит все три ветки можно объединить в else (то есть эту и верхнюю просто убрать)

Comment thread src/main/java/Main.java
}
double answer = sum / quantity;
String result = String.format("%.2f", answer);
if ((answer < 2) & (answer >= 1)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Одновременно меньше 2 и больше или равно 1 только одно число - это 1, значит можно просто написать answer == 1

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

там же дробные значения между 1 и 2 ещё есть

@MagicUnderHood MagicUnderHood Jan 18, 2023 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, действительно, но для правильного определения окончания лучше отбросить дробную часть (поскольку слово рубль зависит только от целой части числа), например, приведя к int число, и тогда дробных значений не будет

Comment thread src/main/java/Main.java
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)){

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Выражение answer % 10 считается много раз, можно посчитать его один раз, записать в переменную и использовать ее

Comment thread src/main/java/Main.java
if ((answer < 2) & (answer >= 1)) {
System.out.println("Полученная сумма, которую должен заплатить каждый человек = " + result + " рубль");
}
else if ((answer % 10 >= 2) & (answer % 10 <= 4) & (answer <= 10)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше использовать && вместо &, это называется ленивым логическим И, в случае получения слева false дальше выражение считаться не будет, поскольку всё выражение целиком точно будет false и смысла считать дальше нет. Для логического или аналогично - ||

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants