Вложенный тернарный оператор

391
26 апреля 2019, 05:00

Прохожу тест-задачу:

С помощью тернарного оператора замените инициализацию переменной b в указанном коде:

int a = 10;
    int b;
    if (a > 0) {
        if (a < 100) {
            b = 1;
        } else {
            b = 0;
        }
    } else {
        b = -1;
    }

По-моему, тут надо использовать вложеный тернарный оператор, я сделал так:

int a = 10;
    int b;
    b = (a > 0) ? ((a < 100) ? b = 1 : b = 0) : b = -1  ;

но тест отвечает, что я не прав. Где я ошибаюсь и почему это так?

Answer 1

Да, вложенная тернарная операция. Логически сделал верно. Но допущена синтаксическая ошибка - попытка присвоить значение переменной b внутри тернарной операции.

Правильно должно быть так:

int a = 10;
int b = a > 0 ? a < 100 ? 1 : 0 : -1;

Вложенное выражение a < 100 ? 1 : 0 возвращает значение, которое используется в выражении выше a > 0 ? ВЛОЖЕННОЕ : -1, которое так же возвращает значение, но уже непосредственно в переменную b.

READ ALSO
Scala vs Java, какой язык быстрее [закрыт]

Scala vs Java, какой язык быстрее [закрыт]

Какой язык быстрее java или scala, допустим есть две программы написанные по тому же алгоритму только одна написана на Java а другая на scala, какая...

140
Cannot resolve symbol in package

Cannot resolve symbol in package

При запуске программы открывается следующее окно

108
Как реализовать на Java операцию &amp; из C++?

Как реализовать на Java операцию & из C++?

Пытаюсь реализовать шифр "Кузнечика" на JavaНо встала проблема

137
Что будет если вернуть значение в рекурсии?

Что будет если вернуть значение в рекурсии?

Допустим есть такой метод:

133