Java: Условная конструкция
Вкратце
if (условие) {
// код, который будет выполнен
// если условие истинно
}
Задача предиката — получить ответ на вопрос, но обычно коду, вызывающему предикат, этого не достаточно и нужно выполнить определенное действие в зависимости от ответа.
Напишем функцию, которая определяет тип переданного предложения. Для начала она будет отличать обычные предложения от вопросительных.
public static void main(String[] args) {
getTypeOfSentence("Hodor"); // => "normal"
getTypeOfSentence("Hodor?"); // => "question"
}
static String getTypeOfSentence(String sentence) {
var lastChar = sentence.charAt(sentence.length() - 1); // способ извлечь последний символ
if (lastChar == '?') { //lastChar имеет тип "символ", а не "строка", символы сравнивают через ==
return "question";
}
return "normal";
}
if
— инструкция. В скобках ей передается выражение-предикат, а затем описывается блок кода в фигурных скобках. Этот блок кода будет выполнен, только если предикат — истина.
Если предикат вычислился в значение false
, то блок кода в фигурных скобках пропускается, и функция продолжает свое выполнение дальше.
В нашем случае следующая строчка кода — return "normal";
— заставит функцию вернуть строку и завершиться.
А вот если выражение, которое проверялось в if
, оказалось равно true
, тогда выполняется блок внутри {}
при операторе if
, и оператор return "question"
. В нормальных обстоятельствах после выполнения этого блока {}
продолжилось бы выполнение функции со следующего оператора после if
. Но оператор return
внутри if
заставляет функцию вернуть "question" в качестве своего значения, и далее не выполняться. Поэтому return "normal"
уже не будет выполнено.
Как видите, return
может находиться где угодно в функции. В том числе внутри блока кода с условием.
Если в фигурных скобках после if
содержится только одна строчка кода, то фигурные скобки можно не писать и сделать так:
public static void main(String[] args) {
System.out.println(getTypeOfSentence("Hodor")); // => normal
System.out.println(getTypeOfSentence("Hodor?")); // => question
}
static String getTypeOfSentence(String sentence) {
var lastChar = sentence.charAt(sentence.length() - 1); // способ извлечь последний символ
if (lastChar == '?')
return "question";
return "normal";
}
Советуем не делать так и всегда писать фигурные скобки. В таком случае явно видно, где начинается и заканчивается тело условия. Код становится более чётким и понятным.
Задание
Реализуйте функцию getSentenceTone()
, которая принимает строку и определяет тон предложения. Если все символы в верхнем регистре, то это вопль — "scream"
. В ином случае — нормальное предложение — "normal"
.
Алгоритм:
- Сгенерируйте строку в верхнем регистре на основе строки-аргумента str с помощью
str.toUpperCase()
. - Сравните её с исходной строкой:
- Если строки равны, значит строка-аргумент в верхнем регистре.
- В ином случае строка-аргумент не в верхнем регистре.