Java: bool + int

Oct 18 2020

Есть ли способ заставить Java работать с логическим / целочисленным сложением и оценкой? В частности, в C ++ есть соответствующая функция, которая сокращает многие операторы if.

for (int i = 0; i < n; ++i)
    cout << i;

Эквивалентно

while (n--)
    cout << n;

Или вместо:

for (int i = 0; i < n; ++i)
    if (x == y)
        count++;

Можно иметь

for (int i = 0; i < n; ++i)
    count += (x==y);

Есть ли способ сделать что-то подобное в Java?

Ответы

3 ArvindKumarAvinash Oct 18 2020 at 17:02

Вы можете использовать тернарный оператор в Java для того же эффекта.

public class Main {
    public static void main(String[] args) {
        int x = 5, y = 10, count = 0;
        count += x == y ? 1 : 0;
        System.out.println(count);

        x = 10;
        count += x == y ? 1 : 0;
        System.out.println(count);
    }
}

Вывод:

0
1
Polygnome Oct 18 2020 at 17:06

Код чаще читают, чем пишут. Хотя вы можете использовать тернарный оператор, его семантика сводится к увеличениюcountxy только при равенстве . Итак, наиболее читаемый способ написать это - использовать:

for (int i = 0; i < n; ++i)
   if (x == y) count++;

Выполнение трюков, как count += (x==y)на других языках, - это уже плохая практика, поскольку это запутывает логику. Оптимизируйте для чтения, а не для записи.