/
Программирование
/
Курс Java
/

Конструкция if-else

Java: Конструкция if-else

Конструкция if умеет проверять условие и выполнять блок кода, когда оно истинно. У нее есть продолжение. Ветка else задает блок, который выполнится, если условие в if оказалось ложным:

if (x > 5) {
    // Выполнится, если условие true
} else {
    // Выполнится, если условие false
}

Посмотрите на метод ниже. Он определяет тип предложения по последнему символу. Если предложение оканчивается знаком вопроса, метод вернет Sentence is question, иначе вернет Sentence is general:

public static String getTypeOfSentence(String sentence) {
    String sentenceType;

    if (sentence.endsWith("?")) {
        sentenceType = "question";
    } else {
        sentenceType = "general";
    }

    return "Sentence is " + sentenceType;
}

App.getTypeOfSentence("Hodor");  // "Sentence is general"
App.getTypeOfSentence("Hodor?"); // "Sentence is question"

Мы добавили else и новый блок. Он выполнится, если условие в if окажется ложным. Слово else переводится как "иначе".

┌──────────┐
     │ условие? │
     └─────┬────┘
     ┌─────┴──────┐
true │            │ false
     ↓            ↓
┌─────────┐ ┌───────────┐
│ тело if │ │ тело else │
└─────────┘ └───────────┘

В блок else можно вкладывать другие условия if:

int number = 10;

if (number > 10) {
    System.out.println("Number is greater than 10");
} else {
    if (number == 10) {
        System.out.println("Number is exactly 10");
    } else {
        System.out.println("Number is less than 10");
    }
}

Два способа оформить if-else

Конструкцию if-else можно записать двумя способами. С помощью отрицания меняется порядок блоков:

public static String getTypeOfSentence(String sentence) {
    String sentenceType;

    if (!sentence.endsWith("?")) {
        sentenceType = "general";
    } else {
        sentenceType = "question";
    }

    return "Sentence is " + sentenceType;
}

Чтобы конструкцию было удобнее оформлять, выбирайте проверку без отрицаний и подстраивайте содержимое блоков под нее.

Когда else не нужен

Если ветка if содержит return, то else можно опустить. После return метод завершается, и следующая строка выполнится только тогда, когда условие в if оказалось ложным:

public static String getTypeOfSentence(String sentence) {
    if (sentence.endsWith("?")) {
        return "question";
    }

    // Сюда попадаем, только если условие выше ложно
    return "general";
}

Такой стиль убирает лишнюю вложенность. Чем проще выглядит метод, тем легче читать его логику.

Задание

Реализуйте метод normalizeUrl(), который выполняет так называемую нормализацию данных. Он принимает адрес сайта и возвращает его с *https://* в начале.

Метод принимает адреса в виде АДРЕС или https://АДРЕС, но всегда возвращает адрес в виде https://АДРЕС

Можно использовать метод startsWith() чтобы проверить начинается ли строка с префикса *https://*. А потом на основе этого добавлять или не добавлять *https://*.

App.normalizeUrl("google.com"); // "https://google.com"
App.normalizeUrl("https://ai.fi"); // "https://ai.fi"

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются