java scanner class tutorial with examples
В този урок ще обсъдим как да импортираме и използваме класа на скенера на Java заедно с различните методи, API на скенера и примери:
Вече видяхме стандартните Input-Output методи, използвани от Java за четене / запис на данни към стандартните I / O устройства.
Java предоставя още един механизъм за четене на потребителски вход. Това е класът на скенера. Макар и не много ефективен, класът Scanner е най-лесният и предпочитан начин за четене на въведени данни в Java програми.
=> Проверете ВСИЧКИ уроци за Java тук.
Какво ще научите:
Клас на Java Scanner: Поглед в дълбочина
Класът скенер се използва най-вече за сканиране на входа и четене на въвеждане на примитивни (вградени) типове данни като int, decimal, double и др. Класът скенер основно връща токенизирания вход въз основа на някакъв модел на разделител. По този начин, като цяло, ако искате да прочетете типа dt, тогава можете да използвате функцията nextdt (), за да прочетете входа.
Класът на скенера изпълнява интерфейси Iterator (низ), Closeable и AutoCloseable.
Нека да проучим подробностите за този клас на скенер сега.
Импортиране на скенер
Класът скенер принадлежи към пакета “java.util”. Следователно, за да използвате класа Scanner във вашата програма, трябва да импортирате този пакет, както следва.
импортиране на java.util. *
ИЛИ
импортиране на java.util.Scanner;
Всяко от горните изявления ще импортира класа Scanner и неговата функционалност във вашата програма.
Java Scanner Class
След като класът Scanner бъде импортиран в програмата Java, можете да го използвате за четене на въведените данни от различни типове данни. В зависимост от това дали искате да прочетете входа от стандартен вход или файл или канал, можете да предадете подходящия предварително дефиниран обект на обекта на скенера.
По-долу е даден основен пример за използване на класа на скенера.
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
Изход:
В горната програма предоставихме “System.in” (стандартен вход) като обект, докато създавахме обект от клас на скенер. След това четем низов вход от стандартния вход.
API на скенера (конструктори и методи)
В този раздел ще разгледаме подробно API на класа на скенера. Класът на скенера съдържа различни претоварени конструктори, за да побере различни методи за въвеждане като System.in, въвеждане на файл, път и т.н.
Следващата таблица дава прототипа и описанието на всеки от конструкторите на клас Scanner.
въпроси за интервю за тестване на автоматизация и отговори за опитни
Недей | Прототип | Описание |
---|---|---|
7 | Скенер (Източник на пътя, низ charsetName) | Този конструктор конструира нов скенер, който сканира посочения файл и генерира стойностите |
1 | Скенер (източник InputStream) | Този конструктор конструира нов скенер, който сканира новия InputStream, източник и генерира стойностите |
две | Скенер (InputStream източник, String charsetName) | Този конструктор конструира нов скенер, който сканира новия InputStream, източник и генерира стойностите |
3 | Скенер (източник на файл) | Този конструктор конструира нов скенер, който сканира посочения файл и генерира стойностите |
4 | Скенер (Файлов източник, String charsetName) | Този конструктор конструира нов скенер, който сканира посочения файл и генерира стойностите |
5 | Скенер (String източник) | Този конструктор конструира нов скенер, който сканира посочения низ и генерира стойностите |
6 | Скенер (източник на път) | Този конструктор конструира нов скенер, който сканира посочения файл и генерира стойностите |
8 | Скенер (четим източник) | Този конструктор конструира нов скенер, който сканира посочения източник и генерира стойностите |
9 | Скенер (ReadableByteChannel източник) | Този конструктор конструира нов скенер, който сканира посочения канал и генерира стойностите |
10 | Скенер (ReadableByteChannel източник, String charsetName) | Този конструктор конструира нов скенер, който сканира посочения канал и генерира стойностите |
Подобно на конструкторите, класът Scanner предлага и множество методи, които се използват за сканиране и четене на входа. Той предоставя различни булеви методи, които ви позволяват да проверите дали следващият маркер във входа е маркер от определен тип данни.
Имайте предвид, че за всеки конструктор можете да предоставите само един аргумент с предварително дефинирания входен обект или два аргумента, състоящи се от предварително дефиниран входен обект и набор от символи. В случай на един аргумент се приема набор от символи по подразбиране.
Съществуват и методи за извличане на маркери от всеки тип данни.
Други методи включват тези за задаване на локал, радикс, модели на съвпадение, затваряне на скенера и т.н.
Следващата таблица дава прототипа и описанието на всеки от основните методи за скенер.
Недей | Прототип | Описание |
---|---|---|
7 | Булево hasNextFloat () | Проверява дали следващият маркер във входа на скенера е от тип float |
1 | Булево hasNext () | Връща true, ако има друг маркер във входа на скенера |
две | Логически hasNextBigDecimal () | Проверява дали следващият маркер във входа на скенера е от тип bigDecimal. |
3 | Булево hasNextBigInteger () | Проверява дали следващият маркер във входа на скенера е от тип bigInteger |
4 | Boolean hasNextBoolean () | Проверява дали следващият маркер във входа на скенера е от булев тип |
5 | Булево hasNextByte () | Проверява дали следващият маркер във входа на скенера е от тип Byte |
6 | Булево hasNextDouble () | Проверява дали следващият маркер във входа на скенера е от двоен тип |
8 | Булево hasNextInt () | Проверява дали следващият маркер във входа на скенера е от цяло число |
9 | Булево hasNextLine () | Проверява дали следващият маркер във входа на скенера е друг ред |
10 | Булево hasNextLong () | Проверява дали следващият маркер във входа на скенера е от дълъг тип |
единадесет | Булево hasNextShort () | Проверява дали следващият маркер във входа на скенера е от кратък тип |
12 | Следващ низ () | Сканира входа за следващ пълен маркер |
13 | BigDecimal nextBigDecimal () | Сканира входа за следващия BigDecimal маркер |
14. | BigInteger nextBigInteger () | Сканира входа за следващия BigInteger маркер |
петнадесет | Boolean nextBoolean () | Сканира входа за следващ булев знак |
16. | Байт nextByte () | Сканира входа за следващ байтов маркер |
17 | Double nextDouble () | Сканира входа за следващ двоен маркер |
18. | Float nextFloat () | Сканира входа за следващ флоатен маркер |
19. | Int nextInt () | Сканира входа за следващ целочислен маркер |
двайсет | Низ nextLine () | Вземете входния низ, пропуснат от обекта на скенера |
двадесет и едно | Long nextLong () | Сканира входните данни за следващия дълъг цяло число |
22. | Кратко nextShort () | Сканира входните данни за следващия кратък цяло число |
2. 3 | Нулиране на скенера () | Нулирайте скенера, който се използва в момента |
24 | Пропускане на скенера () | Игнорирайте разделителите и пропуснете въвеждането, което съответства на дадения модел |
25 | Използване на скенераDelimiter () | Задайте шаблона за ограничаване на посочения модел |
26 | Използване на скенера Locale () | Задайте локалния обект Скенери с дадения локал |
27 | Използване на скенер Radix () | Задайте посочения радикс като радиус по подразбиране за скенер |
28 | Int radix () | Връща радиус по подразбиране на текущия скенер |
29 | премахване на празнотата () | Може да се използва, когато Iterator не поддържа операция за премахване |
30 | Поточни маркери () | Връща поток от разделители, разделени от текущия скенер |
31 | String toString () | Представянето на връщащия низ на даден скенер, който се използва в момента |
32 | IOException ioException () | Връща IOException, последно хвърлен от четлив обект на скенер |
33 | Намиране на потокALL () | Връща потока от резултати от съвпадения, които съответстват на дадения модел |
3. 4 | String findInLine () | Намерете следващото появяване на шаблона от дадения низ; игнорира разделителите |
35 | String findWithinHorizon () | Намерете следващото появяване на шаблона от дадения низ; игнорира разделителите |
36 | Разделител на шаблон () | Връща шаблона, използван от текущия скенер |
37 | Празно затваряне () | Затваря скенера |
38 | MatchResult match () | Връща съответстващия резултат на последната операция за сканиране |
39 | Местен местен () | Върнете локала на текущия скенер |
Проверете тук за да научите повече за методите на скенера.
Как да използвам скенера в Java?
След като видяхте различните конструктори и методи, предоставени от класа Scanner, нека сега внедрим някои от примерите, за да покажем как да използваме класа Scanner в Java.
Следващото изпълнение показва използването на клас Scanner за четене на вход от System.in, т.е. стандартния вход.
Тук използваме предварително дефиниран обект System.in, за да създадем обект Scanner. След това потребителят ще бъде подканен да въведе името, класа и процента. Всички тези подробности се четат с помощта на обекта на класа Scanner.
Обърнете внимание на методите, използвани от обектите на скенера за четене на различни видове въвеждане. Тъй като името е низ, обектът Scanner използва метода next (). За въвеждане на клас използва nextInt (), докато за процент използва nextFloat ().
По този начин можете лесно да разделите входа, докато четете.
Резултатът от програмата показва въведения вход и показаната информация.
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
Изход:
Низ на скенер
Както вече споменахме, можете да използвате различни предварително дефинирани обекти, докато създавате обект на скенер. Това означава, че можете да четете входа от стандартен вход, файлове и различни I / O канали или от низове също.
Когато се използва въвеждане на низ, можете също да използвате регулярни изрази вътре в него.
Следващите примери показват програмата, в която Scanner използва низ като вход. След това този вход се сканира и маркерите се разделят чрез четене на всеки маркер.
След това прочетените маркери се показват в изхода.
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
Изход:
Затворете скенера
Класът Java Scanner използва метода “Close ()”, за да затвори скенера. Класът Scanner също така вътрешно реализира интерфейс Closeable и следователно, ако скенерът вече не е затворен, основният Readable интерфейс извиква своя метод за затваряне.
Добра практика за програмиране е да затворите изрично скенера чрез метода Close (), след като приключите с него.
Забележка: Ако обектът на скенера е затворен и се направи опит за търсене, това води до „IllegalStateException“.
често задавани въпроси
В # 1) Какво представлява класът Scanner в Java?
Отговор: Класът Scanner е част от пакета “java.util” на Java и се използва за четене на въвеждане на различни примитивни типове данни като int, float, низове и т.н.
безплатно приложение за разписание за iphone и android
В # 2) Каква е разликата между методите next () и nextLine () от класа Scanner?
Отговор: Методът next () чете въвеждане до интервал и поставя курсора на същия ред след четене на въвеждане. Методът nextLine () обаче чете целия ред на въвеждане до края на реда, включително интервалите.
В # 3) Какво е hasNext () в Java?
Отговор: Методът hasNext () е един от методите на Java Scanner. Този метод връща true, ако скенерът има друг маркер във входа.
В # 4) Трябва ли да затворите клас на скенер?
Отговор: По-добре е, но не е задължително да затворите класа на скенера, тъй като ако той не е затворен, основният четлив интерфейс на класа на скенера върши работата вместо вас. Компилаторът може да мига с някакво предупреждение, ако не е затворен.
Затова като добра практика за програмиране винаги затваряйте скенера.
В # 5) Каква е целта на “system.in” в класа Scanner?
Отговор: Използвайки “System.in” в класа Scanner, вие позволявате на Scanner да чете клавиатурата, свързана към стандартни входни данни.
Заключение
В този урок видяхме класа Scanner и всички негови подробности, включително API и изпълнението. Класът на скенера се използва за четене на входни данни от различни носители като стандартен вход, файлове, IO канали, низове с / без регулярни изрази и др.
Въпреки че Scanner не е много ефективен начин за четене на въведени данни, това е един от най-лесните начини. Скенерът ви позволява да четете въвеждането на различни примитивни типове данни като int, float, низове и др. Когато използвате низове като входен обект за клас Scanner, можете също да използвате регулярни изрази с него.
Класът Scanner също ви позволява да четете въведеното чрез съвпадение на някакъв шаблон или разделител.
В заключение, използването на клас Scanner в Java остава най-лесният и предпочитан начин за четене на въведеното.
=> Вижте Перфектното ръководство за обучение по Java тук.
Препоръчително четене
- Какво е Java Vector | Урок за Java Vector Class с примери
- Java Array Class Tutorial - java.util.Arrays Class с примери
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Урок за интерфейс на Java и абстрактен клас с примери
- Урок за отражение на Java с примери
- Назъбен масив в Java - урок с примери
- Урок за дължина на масив Java с примери за кодове
- Java урок за низове | Низови методи на Java с примери