Клас сканера в 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) | Сканер (джерело шляху, ім'я набору символів рядка) | Він створює новий сканер, який створює значення, відскановані з указаного файлу. |
Методи класу 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) | BigInteger | nextBigInteger() | Він сканує наступний маркер введення як BigInteger. |
23) | логічний | nextBoolean() | Він сканує наступний маркер введення в логічне значення та повертає це значення. |
24) | байт | nextByte() | Він сканує наступний маркер введення як байт. |
25) | подвійний | nextDouble() | Він сканує наступний маркер введення як подвійний. |
26) | плавати | nextFloat() | Він сканує наступний маркер введення як плаваючу величину. |
27) | внутр | nextInt() | Він сканує наступний маркер введення як Int. |
28) | Рядок | наступнийрядок() | Він використовується для отримання рядка введення, який був пропущений об’єктом Scanner. |
29) | довго | nextLong() | Він сканує наступний маркер введення як довгий. |
30) | короткий | nextShort() | Він сканує наступний маркер введення як короткий. |
31) | внутр | radix() | Він використовується для отримання стандартної основи використання Сканера. |
32) | недійсний | видалити() | Він використовується, коли операція видалення не підтримується цією реалізацією Iterator. |
33) | Сканер | reset() | Він використовується для скидання сканера, який використовується. |
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: /