Класът Scanner в Java се намира в пакета java.util. Java предоставя различни начини за четене на въвеждане от клавиатурата, класът java.util.Scanner е един от тях.
Класът Java Scanner разделя входа на токени, използвайки разделител, който по подразбиране е интервал. Той предоставя много методи за четене и анализиране на различни примитивни стойности.
Класът Java Scanner се използва широко за анализиране на текст за низове и примитивни типове с помощта на регулярен израз. Това е най-простият начин за въвеждане на информация в Java. С помощта на Scanner в Java можем да получим вход от потребителя в примитивни типове като int, long, double, byte, float, short и т.н.
Класът Java Scanner разширява класа Object и имплементира интерфейси Iterator и Closeable.
Класът Java Scanner предоставя nextXXX() методи за връщане на типа стойност като nextInt(), nextByte(), nextShort(), next(), nextLine(), nextDouble(), nextFloat(), nextBoolean() и т.н. За да получите един знак от скенера, можете да извикате метода next().charAt(0), който връща един знак.
Декларация на класа на Java Scanner
public final class Scanner extends Object implements Iterator
Как да получите Java Scanner
За да получим екземпляра на Java Scanner, който чете въведени данни от потребителя, трябва да предадем входния поток (System.in) в конструктора на класа Scanner. Например:
Scanner in = new Scanner(System.in);
За да получим екземпляра на Java Scanner, който анализира низовете, трябва да предадем низовете в конструктора на класа Scanner. Например:
Scanner in = new Scanner('Hello Javatpoint');
Конструктори на класове на Java Scanner
SN | Конструктор | Описание |
---|---|---|
1) | Скенер (източник на файл) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения файл. |
2) | Скенер (източник на файл, име на набор от символи на низ) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения файл. |
3) | Скенер (източник InputStream) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения входен поток. |
4) | Скенер (източник на InputStream, String charsetName) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения входен поток. |
5) | Скенер (четим източник) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения източник. |
6) | Скенер (източник на низ) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения низ. |
7) | Скенер (източник ReadableByteChannel) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения канал. |
8) | Скенер (източник ReadableByteChannel, String charsetName) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения канал. |
9) | Скенер (източник на пътя) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения файл. |
10) | Скенер (Източник на пътя, String charsetName) | Той конструира нов скенер, който произвежда стойности, сканирани от посочения файл. |
Методи на класа на Java Scanner
По-долу е списъкът с методи за скенер:
SN | Модификатор и тип | Метод | Описание |
---|---|---|---|
1) | невалиден | близо() | Използва се за затваряне на този скенер. |
2) | модел | разделител() | Използва се за получаване на модела, който класът Scanner в момента използва за съпоставяне на разделители. |
3) | Поток | findAll() | Използва се за намиране на поток от съвпадащи резултати, които съответстват на предоставения низ на шаблон. |
4) | низ | findInLine() | Използва се за намиране на следващото появяване на шаблон, конструиран от посочения низ, като се игнорират разделителите. |
5) | низ | findWithinHorizon() | Използва се за намиране на следващото появяване на шаблон, конструиран от посочения низ, като се игнорират разделителите. |
6) | булево | hasNext() | Връща истина, ако този скенер има друг маркер във входа си. |
7) | булево | hasNextBigDecimal() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като BigDecimal с помощта на метода nextBigDecimal() или не. |
8) | булево | hasNextBigInteger() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като BigDecimal с помощта на метода nextBigDecimal() или не. |
9) | булево | hasNextBoolean() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като булев с помощта на метода nextBoolean() или не. |
10) | булево | hasNextByte() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като байт с помощта на метода nextBigDecimal() или не. |
единадесет) | булево | hasNextDouble() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като BigDecimal с помощта на метода nextByte() или не. |
12) | булево | hasNextFloat() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като Float с помощта на метода nextFloat() или не. |
13) | булево | hasNextInt() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като int с помощта на метода nextInt() или не. |
14) | булево | hasNextLine() | Използва се за проверка дали има друг ред във входа на този скенер или не. |
петнадесет) | булево | hasNextLong() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като Long с помощта на метода nextLong() или не. |
16) | булево | hasNextShort() | Използва се за проверка дали следващият токен във входа на този скенер може да се интерпретира като Short с помощта на метода nextShort() или не. |
17) | IOException | ioException() | Използва се за получаване на IOException, последно хвърлено от този скенер, за четене. |
18) | Местен | локален() | Използва се за получаване на локал на класа Scanner. |
19) | MatchResult | съвпада() | Използва се за получаване на резултата от съответствието на последната операция по сканиране, извършена от този скенер. |
двадесет) | низ | следващия() | Използва се за получаване на следващия пълен токен от скенера, който се използва. |
двадесет и едно) | BigDecimal | nextBigDecimal() | Той сканира следващия токен на входа като BigDecimal. |
22) | Голямо цяло число | nextBigInteger() | Той сканира следващия токен на входа като BigInteger. |
23) | булево | nextBoolean() | Той сканира следващия токен на входа в булева стойност и връща тази стойност. |
24) | байт | nextByte() | Той сканира следващия токен на входа като байт. |
25) | двойно | nextDouble() | Той сканира следващия токен на входа като двоен. |
26) | плавам | nextFloat() | Той сканира следващия токен на входа като float. |
27) | вътр | nextInt() | Той сканира следващия токен на входа като Int. |
28) | низ | следващ ред() | Използва се за получаване на входния низ, който е пропуснат от обекта Scanner. |
29) | дълго | nextLong() | Той сканира следващия токен на входа като дълъг. |
30) | къс | nextShort() | Той сканира следващия токен на входа като кратък. |
31) | вътр | радикс() | Използва се за получаване на основата по подразбиране за използване на скенера. |
32) | невалиден | Премахване() | Използва се, когато операцията за премахване не се поддържа от тази реализация на Iterator. |
33) | Скенер | нулиране() | Използва се за нулиране на скенера, който се използва. |
3. 4) | Скенер | пропусни () | Той пропуска въвеждането, което съответства на указания шаблон, игнорирайки разделителите |
35) | Поток | токени() | Използва се за получаване на поток от токени, разделени с разделител, от обекта Scanner, който се използва. |
36) | низ | toString() | Използва се за получаване на низово представяне на Scanner. |
37) | Скенер | useDelimiter() | Използва се за задаване на шаблона за разделяне на скенера, който се използва, към посочения шаблон. |
38) | Скенер | useLocale() | Използва се за задаване на локалния обект на този скенер на посочения локал. |
39) | Скенер | useRadix() | Използва се за задаване на основата по подразбиране на използвания скенер на посочената основа. |
Пример 1
Нека да видим прост пример за Java Scanner, където получаваме един вход от потребителя. Тук искаме низ чрез метода in.nextLine().
import java.util.*; public class ScannerExample { public static void main(String args[]){ Scanner in = new Scanner(System.in); System.out.print('Enter your name: '); String name = in.nextLine(); System.out.println('Name is: ' + name); in.close(); } }
Изход:
Enter your name: sonoo jaiswal Name is: sonoo jaiswal
Пример 2
import java.util.*; public class ScannerClassExample1 { public static void main(String args[]){ String s = 'Hello, This is JavaTpoint.'; //Create scanner Object and pass string in it Scanner scan = new Scanner(s); //Check if the scanner has a token System.out.println('Boolean Result: ' + scan.hasNext()); //Print the string System.out.println('String: ' +scan.nextLine()); scan.close(); System.out.println('--------Enter Your Details-------- '); Scanner in = new Scanner(System.in); System.out.print('Enter your name: '); String name = in.next(); System.out.println('Name: ' + name); System.out.print('Enter your age: '); int i = in.nextInt(); System.out.println('Age: ' + i); System.out.print('Enter your salary: '); double d = in.nextDouble(); System.out.println('Salary: ' + d); in.close(); } }
Изход:
Boolean Result: true String: Hello, This is JavaTpoint. -------Enter Your Details--------- Enter your name: Abhishek Name: Abhishek Enter your age: 23 Age: 23 Enter your salary: 25000 Salary: 25000.0
Пример 3
import java.util.*; public class ScannerClassExample2 { public static void main(String args[]){ String str = 'Hello/This is JavaTpoint/My name is Abhishek.'; //Create scanner with the specified String Object Scanner scanner = new Scanner(str); System.out.println('Boolean Result: '+scanner.hasNextBoolean()); //Change the delimiter of this scanner scanner.useDelimiter('/'); //Printing the tokenized Strings System.out.println('---Tokenizes String---'); while(scanner.hasNext()){ System.out.println(scanner.next()); } //Display the new delimiter System.out.println('Delimiter used: ' +scanner.delimiter()); scanner.close(); } }
Изход:
Boolean Result: false ---Tokenizes String--- Hello This is JavaTpoint My name is Abhishek. Delimiter used: /