Java if elif else

Лекция 3. Управляющие конструкции языка Java

В отличие от Python у каждой переменной Java указывается тип, и переменная может хранить значения толького этого типа. Например, переменная типа int может хранить значения только типа int :

int x = 42; // хорошо x = "abc"; // ошибка компиляции, программа даже не запустится. int x = "abc"; //тоже ошибка 

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

int x; String s; boolean b; int p, q, r; // можно сразу несколько int pp = 0, qq = 0, r = 0; 

Можно сразу инициализировать значение переменной, указав начальное значение:

int x = 42; //инициализатор String s = "abc"; 

Пока вы не присвоите переменной значение, из нее нельзя читать значение. Это тоже ошибка компиляции:

String s; System.out.println(s); //распечатать значение — ошибка //variable s might not have been initialized int x; if (. ) x = 10; System.out.println(x); //ошибка, могло не быть инициализировано 

Область видимости переменной

Переменная в Java доступна с момента определения до конца блока, в котором она определена. Блок — это часть программы между фигурными скобками:

public static void main(String[] args) < int x = 1; // z недоступна, она будет определена позже if (x < 10) < int y = 20; System.out.println(x + y); //доступны x и y >int z = 2; System.out.println(x, z); //y недоступна > 

Условный оператор if

Если есть логическое выражение УСЛОВИЕ (выражение типа boolean и только его), его можно вставить в оператор if:

if (УСЛОВИЕ) < // фигурная скобка через пробел после ) //операторы с отступом в 4 пробела >else < //без отступа относительно if //операторы с отступом в 4 пробела >//без отступа относительно if if (УСЛОВИЕ) < >// else не обязательный 

В отличие от python, расстановка отступов не влияет на работу программы, отступы ставятся для читаемости текста, они важны, ставьте их, пожалуйста, правильно.

Читайте также:  Error java lang securityexception caller uid

Если в блоке операторов внутри if ровно один оператор, можно не ставить фигурные скобки (я рекомендую не ставить в этой ситуации):

В Java нет elif . Как поступить без него?

if (x < 0) sout("отрицательный"); //sout = System.out.println() else < if (x == 0) sout("ноль"); else < if (x >1_000_000) sout("очень большой"); else sout("положительный"); > > 
if (x < 0) sout("отрицательный"); //sout = System.out.println() else if (x == 0) sout("ноль"); else if (x >1_000_000) sout("очень большой"); else sout("положительный"); 

Получается, что else if это как бы и есть elif из Python.

Оператор switch

(Кстати. Вышла 17 Java. Обновитесь. 17 — релиз с длительной поддержкой)

Этот оператор позволяет выбрать один вариант действий в зависимости от значения выражения. Посмотрим только на новую версию switch, старую версию switch (выражение) с двоеточием поле case посмотрите сами.

Функции в Java

Пример программы с функциями

public class Task  public static void main(String[] args)  // главная функция, с нее начинается программа // давайте договоримся делать функцию main первой sout(sum(2, 3)); //5 int z = sum(2, 3); //sum(2, "abc"); //ошибка, аргументы указаны как тип int sout(hello("Ilya")); //"Hello, Ilya" printHello("Ilya")); //ok //sout(printHello("Ilya")); //нечего печатать, ошибка //void x = printHello("Ilya"); //ошибка, ничего не вернется > private static ТИП-РЕЗУЛЬТАТА ИМЯ-ФУНКЦИИ(АРГУМЕНТЫ С ТИПАМИ)  тело функции > private static int sum(int x, int y)  return x + y; // оператор return аналогичен python //возвращаемое выражение должно иметь тип, указанный в //заголовке функции > private static String hello(String name)  return "Hello, " + name + "!"; > private static void printHello(String name)  //void — ничего sout("Hello, " + name + "!"); > > 

Отступление, как форматировать строки в Java

Нужен аналог f-строк в Python. f»Hello, !»

 String name = "Ilya"; String.format("Hello, %s!", name); //это получается тип String sout(String.format("Hello, %s!", name)); String hello = String.format("Hello, %s!", name); String.format("x = %f", 4.2); String.format("x = %.2f", 4.2); //.2 два знака после запятой //%s - подставь строку //%f - подставь вещественно число 

Источник

Java If . Else

You already know that Java supports the usual logical conditions from mathematics:

  • Less than: a < b
  • Less than or equal to: a
  • Greater than: a > b
  • Greater than or equal to: a >= b
  • Equal to a == b
  • Not Equal to: a != b

You can use these conditions to perform different actions for different decisions.

Java has the following conditional statements:

  • Use if to specify a block of code to be executed, if a specified condition is true
  • Use else to specify a block of code to be executed, if the same condition is false
  • Use else if to specify a new condition to test, if the first condition is false
  • Use switch to specify many alternative blocks of code to be executed

The if Statement

Use the if statement to specify a block of Java code to be executed if a condition is true .

Syntax

if (condition) < // block of code to be executed if the condition is true > 

Note that if is in lowercase letters. Uppercase letters (If or IF) will generate an error.

In the example below, we test two values to find out if 20 is greater than 18. If the condition is true , print some text:

Example

We can also test variables:

Example

int x = 20; int y = 18; if (x > y)

Example explained

In the example above we use two variables, x and y, to test whether x is greater than y (using the > operator). As x is 20, and y is 18, and we know that 20 is greater than 18, we print to the screen that «x is greater than y».

The else Statement

Use the else statement to specify a block of code to be executed if the condition is false .

Syntax

if (condition) < // block of code to be executed if the condition is true > else < // block of code to be executed if the condition is false > 

Example

int time = 20; if (time < 18) < System.out.println("Good day."); >else < System.out.println("Good evening."); >// Outputs "Good evening." 

Example explained

In the example above, time (20) is greater than 18, so the condition is false . Because of this, we move on to the else condition and print to the screen «Good evening». If the time was less than 18, the program would print «Good day».

The else if Statement

Use the else if statement to specify a new condition if the first condition is false .

Syntax

if (condition1) < // block of code to be executed if condition1 is true > else if (condition2) < // block of code to be executed if the condition1 is false and condition2 is true > else < // block of code to be executed if the condition1 is false and condition2 is false > 

Example

int time = 22; if (time < 10) < System.out.println("Good morning."); >else if (time < 18) < System.out.println("Good day."); >else < System.out.println("Good evening."); >// Outputs "Good evening." 

Example explained

In the example above, time (22) is greater than 10, so the first condition is false . The next condition, in the else if statement, is also false , so we move on to the else condition since condition1 and condition2 is both false — and print to the screen «Good evening».

However, if the time was 14, our program would print «Good day.»

Источник

Условные операторы в Java: if-else, switch и «Элвис»

Обложка: Условные операторы в Java: if-else, switch и «Элвис»

Чтобы эффективно работать с условными операторами на языке Java, необходимо знать, какими они бывают и для каких сценариев подходят. Обсудим это и некоторые нововведения из Java 13.

Условный оператор if

Оператор if позволяет задать условие, в соответствии с которым дальнейшая часть программы может быть выполнена. Это основной оператор выбора, который используется в языке Java. Он начинается с ключевого слова if и продолжается булевым выражением — условием, заключённым в круглые скобки.

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

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

Условный оператор if-else в Java

else в языке Java означает «в ином случае». То есть если условие if не является истинным, выводится то, что в блоке else :

Это же сработает и без ключевого слова else , но чтобы код был читабельным и логичным, не следует пренебрегать else , как это сделано в следующем примере:

if(2 * 2 == 5) < System.out.println("Программа выполняется"); >System.out.println("Условие ошибочно");

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

int a = 20; if(a == 10) < System.out.println("a = 10"); >else if(a == 15) < System.out.println("a = 15"); >else if(a == 20) < System.out.println("a = 20"); >else

Как видим, только третье условие истинно, поэтому выводится именно a = 20 , а все остальные блоки игнорируются.

Вложенный if

Кроме того, может производиться проверка сразу на несколько условий, в соответствии с которыми выполняются разные действия. Представим, что у нас есть две переменные, на основе которых можно создать два условия:

int a = 20; int b = 5; if(a == 20) < System.out.println("a = 20"); if(b == 5)< System.out.println("b = 5"); >>

В результате программа заходит в оба блока и делает два вывода, потому как оба условия истинны.

«Элвис»

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

Само выражение будет выглядеть следующим образом:

int a = 20; int b = 5; String answer = (a > b) ? "Условие верно" : "Условие ошибочно"; System.out.println(answer);

Как видите, с помощью тернарного оператора можно существенно сократить код. Но не стоит им злоупотреблять: для сложных условий используйте другие операторы выбора Java, дабы не ухудшать читаемость кода.

Условный оператор switch в Java

Оператор выбора switch позволяет сравнивать переменную как с одним, так и с несколькими значениями. Общая форма написания выглядит следующим образом:

Рассмотрим распространённый пример с днями недели:

public class Main < //Создадим простое перечисление дней недели private static enum DayOTheWeek< MON, TUE, WED, THU, FRI, SAT, SUN >public static void main(String[] args) < //Выбираем понедельник (MON) var dayOfTheWeek= DayOTheWeek.MON; switch (dayOfTheWeek)< case MON: System.out.println("Понедельник"); break; case TUE: System.out.println("Вторник"); break; default: System.out.println("Другой день недели"); >> >

break при этом прерывает процесс проверки, поскольку соответствие условия уже найдено. Но начиная с Java 13, вместо break в условном операторе switch правильнее использовать yield — ключевое слово, которое не только завершает проверку, но и возвращает значение блока.

Кроме того, с 12 версии Java конструкция switch-case также претерпела некоторые изменения. Если вы используете в работе IntelliJ IDEA, данная среда разработки сама подскажет, как оптимизировать switch-case под новые версии.

Вот преобразованный код из нашего примера с некоторыми изменениями:

public class Main < private static enum DayOTheWeek< MON, TUE, WED, THU, FRI, SAT, SUN >public static void main(String[] args) < //В этот раз выберем вторник var dayOfTheWeek= DayOTheWeek.TUE; String result = switch (dayOfTheWeek)< case MON ->"Понедельник"; case TUE, WED, THU, FRI -> < yield "Любой будний день, кроме понедельника."; >default -> "Выходной день"; >; System.out.println(result); > >
Любой будний день, кроме понедельника.

Задачи на условные операторы Java

Определите, что выведут в консоль следующие примеры, без проверки в компиляторе.

1. В переменной min лежит число от 0 до 59. Определите в какую четверть часа попадает это число (в первую, вторую, третью или четвертую):

int min = 10; if(min >= 0 && min else if(min >= 15 && min else if(min >= 31 && min else

7 практических заданий с собеседования на позицию Junior Java Developer

2. Что выведет следующий код:

int month = 3; String monthString; switch (month) < case 1: monthString = "Январь"; break; case 2: monthString = "Февраль"; break; case 3: monthString = "Март"; break; case 4: monthString = "Апрель"; break; case 5: monthString = "Май"; break; case 6: monthString = "Июнь"; break; case 7: monthString = "Июль"; break; case 8: monthString = "Август"; break; case 9: monthString = "Сентябрь"; break; case 10: monthString = "Октябрь"; break; case 11: monthString = "Ноябрь"; break; case 12: monthString = "Декабрь"; break; default: monthString = "Не знаем такого"; break; >System.out.println(monthString);

3. Какое значение будет присвоено переменной k :

Пишите свои ответы к задачам по условным операторам в Java.

Источник

Оцените статью