При программировании на Java или любом другом языке вам, скорее всего, потребуется использовать вводимую информацию от пользователя. Java предоставляет множество различных методов для получения информации о пользователе, но наиболее распространенным и, возможно, самым простым в реализации методом является использование объекта Scanner.
Шаги
Метод 1 из 2: видео
Шаг 1. Импортируйте класс Scanner
Вы можете выбрать импорт
java.util. Scanner
класс или весь
java.util
упаковка. Чтобы импортировать класс или пакет, добавьте одну из следующих строк в самое начало вашего кода:
import java.util. Scanner; // Будет импортирован только класс Scanner. import java.util. *; // Это импортирует весь пакет java.util.
Шаг 2. Инициализируйте новый объект Scanner, передав
System.in
входной поток в конструктор.
System.in
- это стандартный входной поток, который уже открыт и готов предоставить входные данные. Обычно этот поток соответствует вводу с клавиатуры.
Сканер userInputScanner = новый сканер (System.in);
Шаг 3. Считайте различные типы входных данных, которые вводит пользователь
Класс Scanner поддерживает получение примитивов, таких как int, byte, short, long, в дополнение к получению строк.
-
Вот несколько методов, доступных через класс Scanner:
-
Прочитать байт -
nextByte ()
-
Прочтите короткое -
nextShort ()
-
Прочтите int -
nextInt ()
-
Читать вдоль -
nextLong ()
-
Читать поплавок -
nextFloat ()
-
Прочтите двойной -
nextDouble ()
-
Прочитать логическое значение -
nextBoolean ()
-
Прочтите полную строку -
nextLine ()
-
Прочтите слово -
следующий()
-
-
Вот пример программы, которая использует разные методы класса Scanner для получения различных типов ввода:
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Запуск нового сканера Scanner userInputScanner = new Scanner (System.in); // Тестирование nextLine (); System.out.println ("\ nКак вас зовут?"); Имя строки = userInputScanner.nextLine (); // Тестирование nextInt (); System.out.print («Сколько у вас кошек?»); int numberOfCats = userInputScanner.nextInt (); // Тестирование nextDouble (); System.out.print («Сколько денег у вас в кошельке? $»); double moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHello" + name + "! У вас есть" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "и $" + moneyInWallet + "в вашем кошельке. / N"); }}
Метод 2 из 2: обработка исключений
Шаг 1. Обработка исключений ввода
An
InputMismatchException
выдается, когда пользователь вводит данные, не соответствующие запрошенному типу. Например, если пользователь вводит String, когда запрашивается int, программа выдаст
InputMismatchException
и выйти. Есть несколько способов обработать это исключение и решить эту проблему, чтобы ваша программа была надежной.
Шаг 2. Используйте блок try-catch для обработки
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Запуск нового сканера Scanner userInputScanner = new Scanner (System.in); // Тестирование nextLine (); System.out.print ("\ nКак вас зовут?"); Имя строки = userInputScanner.nextLine (); // Тестирование nextInt (); логическое значение validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Сколько у вас кошек?"); попробуйте {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Тестирование nextDouble (); validInput = false; двойной moneyInWallet = 0.0; while (! validInput) {System.out.print ("Сколько денег в вашем кошельке? $"); попробуйте {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHello" + name + "! У вас есть" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "и $" + moneyInWallet + "в вашем кошельке. / n "); }}
Обратите внимание, что нам нужно импортировать
java.util. InputMismatchException
чтобы использовать
InputMismatchException
Добавление
userInputScanner.nextLine ();
Шаг 3. В качестве альтернативы сделайте ввод данных пользователем надежным, беря только следующие строки из сканера
Таким образом, мы можем гарантировать, что все, что возвращает Scanner, является объектом String и не будет создавать никаких исключений. Затем, чтобы преобразовать строки в целые или двойные числа, мы можем использовать классы-оболочки Integer и Double.
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Запуск нового сканера Scanner userInputScanner = new Scanner (System.in); // Тестирование nextLine (); System.out.print ("\ nКак вас зовут?"); Имя строки = userInputScanner.nextLine (); // Тестирование nextInt (); логическое значение validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Сколько у вас кошек?"); Строка input = userInputScanner.nextLine (); попробуйте {numberOfCats = Integer.parseInt (ввод); validInput = true; } catch (NumberFormatException e) {validInput = false; }} // Тестирование nextDouble (); validInput = false; двойной moneyInWallet = 0.0; while (! validInput) {System.out.print ("Сколько денег в вашем кошельке? $"); Строка input = userInputScanner.nextLine (); попробуйте {moneyInWallet = Double.parseDouble (ввод); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHello" + name + "! У вас есть" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "и $" + moneyInWallet + "в вашем кошельке. / n "); }}
Обратите внимание, что здесь нам не нужно было импортировать
NumberFormatException
Нам также не нужно было очищать буфер с помощью
userInputScanner.nextLine ();
подсказки
- См. Scanner API для получения дополнительной информации об использовании класса Scanner.
- Всегда используйте.next () вместо.nextLine () для чтения следующего слова, так как.nextLine () может содержать ошибки.