Оператор if принимает на вход выражение логического типа. То есть такое выражение, в результате вычисления которого получается истина (true) или ложь (false). Если результатом является истина, то выполняется блок операторов который идёт после выражения.
Если выражение ложно, то выполняется блок операторов следующий за ключевым словом else.
if(выражение){
блок_операторов_1
}else{
блок_операторов_2
}// end if
В данном примере блок_операторов_1 будет выполнен, если результатом выражения будет истина. В противном случае, будет выполнен блок_операторов_2.
В классе Scanner определена группа методов названия которых начитаются на hasNext. Например hasNextInt(). Эти методы возвращают результат логического типа, то есть именно такого, какое требует оператор if для выражения.
Например у Вы пишете метод проверяющий ввёл пользователь целое число, или что-то другое, что не может быть интерпретировано как целое число. В этом методе у Вас есть сканер подключённый к потоку ввода с клавиатуры:
Scanner scnr =newScanner(System.in);
Допустим, по заданию, Ваш метод должен возвращать введённое пользователем число, если это было число, и возвращать значение -1, предупреждая пользователя об ошибке ввода, если, например при наборе числа пользователь совершил опечатку (например, напечатал букву O вместо цифры 0). Для подобного случая в классе Scanner, определён метод hasNextInt(), который возвращает истину (true), если то, что считал сканер может быть интерпретировано как целое число, и ложь (false) в противном случае.
Полный код этого метода, мог бы выглядеть так:
publicstaticint getIntFromUser (){// Объявляем переменную в которой будет хранится возвращаемое числоint result;// Объявляем переменную сканера, подключая его к потоку ввода клавиатурыScanner scnr =newScanner(System.in);// Дожидаемся ввода пользователя, и проверяем его на правильностьif(scnr.hasNextInt()){// Всё в порядке - пользователь ввёл целое число// Считываем и запоминаем введённое число
result = scnr.nextInt();}else{// Пользователь ошибся при вводе// Записываем в перемменную результата значение -1
result =-1;// Сообщаем пользователю об ошибкеSystem.out.println("Ошибка: совершена опечатка");}// end if// Возвращаем результатreturn result;}// end getIntFromUser()
Обратите внимание: метод hasNextInt() только дожидается ввода пользователя, анализирует введённую пользователем последовательность символов, и выдаёт свой вердикт - может ли считаться целым числом, то, что ввёл пользователь, но не извлекает введённые символы из потока ввода.
Если введённые пользователем символы можно рассматривать как целое число, эти символы извлекаются из потока ввода и преобразуются в значение числа с помощью метода nextInt() класса Scanner.
Более подробное описание того, что именно делают эти и другие методы класса Scanner, Вы можете прочесть в официальной документации.
if
принимает на вход выражение логического типа. То есть такое выражение, в результате вычисления которого получается истина (true
) или ложь (false
). Если результатом является истина, то выполняется блок операторов который идёт после выражения. Если выражение ложно, то выполняется блок операторов следующий за ключевым словомelse
. В данном примере блок_операторов_1 будет выполнен, если результатом выражения будет истина. В противном случае, будет выполнен блок_операторов_2. В классе Scanner определена группа методов названия которых начитаются на hasNext. Например hasNextInt(). Эти методы возвращают результат логического типа, то есть именно такого, какое требует операторif
для выражения.-1
, предупреждая пользователя об ошибке ввода, если, например при наборе числа пользователь совершил опечатку (например, напечатал буквуO
вместо цифры0
). Для подобного случая в классе Scanner, определён методhasNextInt()
, который возвращает истину (true
), если то, что считал сканер может быть интерпретировано как целое число, и ложь (false
) в противном случае. Полный код этого метода, мог бы выглядеть так:Scanner
. Более подробное описание того, что именно делают эти и другие методы классаScanner
, Вы можете прочесть в официальной документации.