Почему это троичное выражение дает мне синтаксическую ошибку? - PullRequest
1 голос
/ 30 апреля 2020

Эквивалент, если оператор работает (закомментирован), но тернарный оператор - нет. Почему это так?

class Solution {
    public String defangIPaddr(String address) {

        StringBuilder sb = new StringBuilder(); 

        for (char letter : address.toCharArray()) {
            (letter == '.') ? sb.append("[.]") : sb.append(letter); 



            // if (letter == '.')
            //     sb.append("[.]");
            // else 
            //     sb.append(letter);
        }

        return sb.toString(); 

    }
}

1 Ответ

3 голосов
/ 30 апреля 2020

Эквивалент для приведенного выше кода:

sb.append(letter == '.' ? "[.]" : letter);

Условный оператор возвращает значение вместо выполнения оператора. Вот почему вы получили там синтаксическую ошибку «Не утверждение». Вы не должны использовать «?» в качестве замены оператора «if», если ваш план состоит в том, чтобы выполнить оператор вместо возврата значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...