Бесплатный курс по java. Зарегистрируйтесь для отслеживания прогресса →

Java: Тернарный оператор

Посмотрите на определение метода, который возвращает модуль переданного числа:

// Если больше нуля то само число, если меньше, то убираем знак
public static int abs(number) {
  if (number >= 0) {
    return number;
  }

  return -number;
}

App.abs(10); // 10
App.abs(-10); // 10

В Java существует конструкция, которая по своему действию аналогична конструкции if-else, но при этом является выражением. Она называется тернарный оператор. Тернарный оператор — единственный в своем роде оператор, требующий три операнда. Он помогает писать меньше кода для простых условных выражений. Наш пример выше с тернарным оператором превращается в три строки кода:

public static int abs(number) {
  return number >= 0 ? number : -number;
}

Общий шаблон выглядит так: <predicate> ? <expression on true> : <expression on false>. То есть сначала мы записываем логическое выражение, а дальше два разных варианта поведения, первый, сразу после вопроса, выполняется если условие истино, и второй, после двоеточия выполняется если условие ложно.

Задание

Реализуйте метод convertString(), который принимает на вход строку и, если первая буква не заглавная, возвращает перевернутый вариант исходной строки. Если первая буква заглавная, то строка возвращается без изменений. Если на вход передана пустая строка, метод должен вернуть пустую строку.

App.convertString("Hello"); // "Hello"
App.convertString("hello"); // "olleh"

// Не забудьте учесть пустую строку!
App.convertString(""); // ""
  • StringUtils.reverse() – переворот строки
  • Character.isUpperCase() – проверка символа на верхний регистр

Попробуйте написать два варианта функции: с обычным if-else, и с тернарным оператором.


Определения

  • Тернарный оператор - Способ превратить простую условную инструкцию в выражение, например, number >= 0 ? number : -number.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе