Как упростить это условие?

Я изучаю использование условий if-elseelse-if, и мне интересно, можно ли как-то упростить это утверждение ниже. Могу ли я объединить их все в одно заявление?

if (a < 0) {
    a = 1;
}
if (b < 0) {
    b = 1;
}
if (c < 0) {
    c = 1;
}

Поскольку все переменные независимы друг от друга, вы не можете комбинировать операторы

st.huber 19.03.2022 10:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Кажется невозможным объединить все упомянутые вами операторы if в один, поскольку a, b, c все являются независимыми переменными. Однако, чтобы сделать ваш код более читабельным, вы можете воспользоваться методом.

например Реализуйте такой метод:

int processNegativeNumber(int num) {
    if (num < 0) {
        return 1;
    }
    return num;
}

Теперь вы можете назвать это так:

a = processNegativeNumber(a);
b = processNegativeNumber(b);
c = processNegativeNumber(c);

Я бы не назвал такой метод checkNumber. Прежде всего, метод выполняет операцию. Checknumber не указывает на такое действие. Кроме того, значение один полностью отсутствует в уравнении. Принцип наименьшей неожиданности утрачен.

Maarten Bodewes 19.03.2022 11:21

@MaartenBodewes Спасибо за беспокойство. processNegativeNumber() или getValueForNegativeNumber() => Имеют ли смысл эти названия? Или, пожалуйста, не стесняйтесь изменить ответ в соответствии с передовой практикой, на ваш взгляд.

UkFLSUI 19.03.2022 11:32

Да, первое кажется правильным, затем вы можете задокументировать, что оно возвращает 1. Это не полностью описательно, но в данном случае этого нельзя избежать.

Maarten Bodewes 19.03.2022 11:36

Вы можете использовать тернарный оператор, чтобы сохранить некоторые символы :-)

a = a < 0 ? 1 : a;
b = b < 0 ? 1 : b;
c = c < 0 ? 1 : c;

Другие вопросы по теме

Похожие вопросы