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