java scanner class tutorial with examples
W tym samouczku omówimy, jak importować i używać klasy skanera języka Java wraz z różnymi metodami, interfejsem API skanera i przykładami:
Widzieliśmy już standardowe metody wejścia-wyjścia używane przez Javę do odczytu / zapisu danych do standardowych urządzeń we / wy.
Java zapewnia jeszcze jeden mechanizm odczytu danych wejściowych użytkownika. To jest klasa skanera. Choć niezbyt wydajna, klasa Scanner jest najłatwiejszym i preferowanym sposobem odczytu danych wejściowych w programach Java.
=> Sprawdź WSZYSTKIE samouczki Java tutaj.
Czego się nauczysz:
Klasa skanera Java: dogłębne spojrzenie
Klasa Scanner jest najczęściej używana do skanowania danych wejściowych i odczytywania danych wejściowych pierwotnych (wbudowanych) typów danych, takich jak int, decimal, double itp. Klasa Scanner w zasadzie zwraca tokenizowane dane wejściowe na podstawie pewnego wzorca separatora. Zatem ogólnie, jeśli chcesz odczytać typ dt, możesz użyć funkcji nextdt () do odczytania danych wejściowych.
Klasa Scanner implementuje interfejsy Iterator (string), Closeable i AutoCloseable.
Przyjrzyjmy się teraz szczegółom tej klasy skanera.
Importuj skaner
Klasa skanera należy do pakietu „java.util”. Dlatego aby używać klasy Scanner w swoim programie, musisz zaimportować ten pakiet w następujący sposób.
import java.util. *
LUB
import java.util.Scanner;
Każda z powyższych instrukcji zaimportuje klasę Scanner i jej funkcjonalność do twojego programu.
Klasa skanera Java
Po zaimportowaniu klasy Scanner do programu Java można jej używać do odczytywania danych wejściowych różnych typów. W zależności od tego, czy chcesz odczytać wejście ze standardowego wejścia, czy z pliku lub kanału, możesz przekazać odpowiedni predefiniowany obiekt do obiektu Scanner.
Poniżej podano podstawowy przykład użycia klasy Scanner.
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(); } }
Wynik:
W powyższym programie podczas tworzenia obiektu klasy Scanner udostępniliśmy „System.in” (standardowe wejście) jako obiekt. Następnie czytamy ciąg znaków ze standardowego wejścia.
Scanner API (konstruktory i metody)
W tej sekcji szczegółowo omówimy interfejs API klasy Scanner. Klasa Scanner zawiera różne przeciążone konstruktory, które obsługują różne metody wprowadzania, takie jak System.in, plik wejściowy, ścieżka itp.
Poniższa tabela zawiera prototyp i opis każdego z konstruktorów klasy Scanner.
aplikacja, w której możesz pobrać filmy z YouTube
Nie rób | Prototyp | Opis |
---|---|---|
7 | Skaner (źródło ścieżki, nazwa zestawu znaków ciągu) | Ten konstruktor tworzy nowy skaner, który skanuje określony plik i tworzy wartości |
1 | Skaner (źródło InputStream) | Ten konstruktor konstruuje nowy skaner, który skanuje nowy strumień wejściowy, źródło i generuje wartości |
dwa | Skaner (źródło InputStream, String charsetName) | Ten konstruktor konstruuje nowy skaner, który skanuje nowy strumień wejściowy, źródło i generuje wartości |
3 | Skaner (źródło pliku) | Ten konstruktor tworzy nowy skaner, który skanuje określony plik i tworzy wartości |
4 | Skaner (źródło pliku, nazwa zestawu znaków ciągu) | Ten konstruktor tworzy nowy skaner, który skanuje określony plik i tworzy wartości |
5 | Skaner (źródło String) | Ten konstruktor tworzy nowy Scanner, który skanuje określony ciąg i tworzy wartości |
6 | Skaner (źródło ścieżki) | Ten konstruktor tworzy nowy skaner, który skanuje określony plik i tworzy wartości |
8 | Skaner (czytelne źródło) | Ten konstruktor tworzy nowy skaner, który skanuje określone źródło i tworzy wartości |
9 | Skaner (źródło ReadableByteChannel) | Ten konstruktor tworzy nowy skaner, który skanuje określony kanał i tworzy wartości |
10 | Skaner (źródło ReadableByteChannel, String charsetName) | Ten konstruktor tworzy nowy skaner, który skanuje określony kanał i tworzy wartości |
Podobnie jak konstruktory, klasa Scanner zapewnia również wiele metod używanych do skanowania i odczytywania danych wejściowych. Udostępnia różne metody Boolean, które pozwalają sprawdzić, czy następny token w wejściu jest tokenem określonego typu danych.
Zauważ, że dla każdego konstruktora możesz podać tylko jeden argument ze wstępnie zdefiniowanym obiektem wejściowym lub dwa argumenty składające się ze wstępnie zdefiniowanego obiektu wejściowego i zestawu znaków. W przypadku jednego argumentu przyjmowany jest domyślny zestaw znaków.
Istnieją również metody pobierania tokenów każdego typu danych.
Inne metody obejmują te do ustawiania ustawień regionalnych, podstawy, wzorców dopasowania, zamykania skanera itp.
Poniższa tabela zawiera prototyp i opis każdej z podstawowych metod programu Scanner.
Nie rób | Prototyp | Opis |
---|---|---|
7 | Boolean hasNextFloat () | Sprawdza, czy następny token w danych wejściowych skanera jest typu zmiennoprzecinkowego |
1 | Boolean hasNext () | Zwraca prawdę, jeśli w danych wejściowych skanera znajduje się inny token |
dwa | Boolean hasNextBigDecimal () | Sprawdza, czy następny token w danych wejściowych skanera jest typu bigDecimal. |
3 | Boolean hasNextBigInteger () | Sprawdza, czy następny token w danych wejściowych skanera jest typu bigInteger |
4 | Boolean hasNextBoolean () | Sprawdza, czy następny token w danych wejściowych skanera jest typu boolowskiego |
5 | Boolean hasNextByte () | Sprawdza, czy następny token w danych wejściowych skanera jest typu Byte |
6 | Boolean hasNextDouble () | Sprawdza, czy następny token w wejściu skanera jest podwójnego typu |
8 | Boolean hasNextInt () | Sprawdza, czy następny token w wejściu Scanner jest typu całkowitego |
9 | Boolean hasNextLine () | Sprawdza, czy następny token w wejściu skanera to inna linia |
10 | Boolean hasNextLong () | Sprawdza, czy następny token w danych wejściowych skanera jest typu długiego |
jedenaście | Boolean hasNextShort () | Sprawdza, czy następny token w wejściu skanera jest krótkiego typu |
12 | Ciąg następny () | Przeszukuje dane wejściowe w poszukiwaniu następnego pełnego tokena |
13 | BigDecimal nextBigDecimal () | Przeszukuje dane wejściowe w poszukiwaniu następnego tokenu BigDecimal |
14 | BigInteger nextBigInteger () | Przeszukuje dane wejściowe w poszukiwaniu następnego tokenu BigInteger |
piętnaście | Boolean nextBoolean () | Przeszukuje dane wejściowe w poszukiwaniu następnego tokenu boolowskiego |
16 | Bajt nextByte () | Przeszukuje wejście w poszukiwaniu następnego tokenu bajtowego |
17 | Double nextDouble () | Przeszukuje dane wejściowe w poszukiwaniu następnego podwójnego tokena |
18 | Float nextFloat () | Przeszukuje dane wejściowe w poszukiwaniu następnego tokenu zmiennoprzecinkowego |
19 | Int nextInt () | Przeszukuje dane wejściowe w poszukiwaniu następnego tokenu całkowitego |
20 | Ciąg nextLine () | Pobierz ciąg wejściowy pominięty z obiektu Scanner |
dwadzieścia jeden | Długi następnyDługi () | Przeszukuje dane wejściowe w poszukiwaniu następnego tokenu typu Long integer |
22 | Short nextShort () | Przeszukuje dane wejściowe w poszukiwaniu następnego tokenu typu Short integer |
2. 3 | Reset skanera () | Zresetuj aktualnie używany skaner |
24 | Pomiń skaner () | Ignoruj ograniczniki i pomiń dane wejściowe, które pasują do podanego wzorca |
25 | Zastosowanie skaneraDelimiter () | Ustaw wzorzec ograniczający na określony wzorzec |
26 | Scanner useLocale () | Ustaw obiekt Scanners locale z podanymi ustawieniami narodowymi |
27 | Zastosowanie skaneraRadix () | Ustaw określoną podstawę jako domyślną podstawę dla skanera |
28 | Int radix () | Zwraca domyślną podstawę bieżącego skanera |
29 | void remove () | Może być używany, gdy Iterator nie obsługuje operacji usuwania |
30 | Przesyłaj tokeny () | Zwraca strumień tokenów oddzielonych separatorem z bieżącego skanera |
31 | Ciąg toString () | Zwracana reprezentacja ciągu danego aktualnie używanego skanera |
32 | IOException ioException () | Zwraca ostatni wyjątek IOException rzucony przez obiekt Scanner do odczytu |
33 | Wyszukiwanie strumienia ALL () | Zwraca strumień wyników dopasowania, które pasują do podanego wzorca |
3. 4 | Ciąg findInLine () | Znajdź następne wystąpienie wzorca z podanego ciągu; ignoruje ograniczniki |
35 | Ciąg findWithinHorizon () | Znajdź następne wystąpienie wzorca z podanego ciągu; ignoruje ograniczniki |
36 | Separator wzoru () | Zwraca wzór używany przez bieżący skaner |
37 | Void close () | Zamyka skaner |
38 | MatchResult match () | Zwraca pasujący wynik ostatniej operacji skanowania |
39 | Lokalny lokalny () | Zwróć ustawienia regionalne bieżącego skanera |
Czek tutaj aby dowiedzieć się więcej o metodach skanera.
Jak używać skanera w Javie?
Po zapoznaniu się z różnymi konstruktorami i metodami udostępnianymi przez klasę Scanner zaimplementujmy teraz kilka przykładów, aby zademonstrować, jak używać klasy Scanner w języku Java.
Poniższa implementacja pokazuje użycie klasy Scanner do odczytu wejścia z System.in, czyli standardowego wejścia.
Tutaj używamy predefiniowanego obiektu System.in do tworzenia obiektu Scanner. Następnie użytkownik jest proszony o podanie nazwy, klasy i wartości procentowej. Wszystkie te szczegóły są odczytywane za pomocą obiektu klasy Scanner.
Zwróć uwagę na metody używane przez obiekty Scanner do odczytywania różnych typów danych wejściowych. Ponieważ nazwa jest łańcuchem, obiekt Scanner używa metody next (). Dla klasy wejściowej używa nextInt (), podczas gdy dla wartości procentowej używa nextFloat ().
W ten sposób można łatwo segregować dane wejściowe podczas czytania.
Dane wyjściowe programu pokazują wprowadzane dane wejściowe i wyświetlane informacje.
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); } }
Wynik:
Sznurek skanera
Jak już wspomniano, podczas tworzenia obiektu Scanner można używać różnych predefiniowanych obiektów. Oznacza to, że możesz czytać dane wejściowe ze standardowego wejścia, plików i różnych kanałów I / O lub również z łańcuchów.
Gdy używane jest ciąg znaków wejściowych, możesz również użyć w nim wyrażeń regularnych.
Poniższe przykłady pokazują program, w którym Scanner używa łańcucha jako danych wejściowych. Te dane wejściowe są następnie skanowane, a tokeny oddzielane przez odczytanie każdego tokena.
Odczytane tokeny są następnie wyświetlane w danych wyjściowych.
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(); } }
Wynik:
Zamknij skaner
Klasa Java Scanner używa metody „Close ()” do zamknięcia skanera. Klasa Scanner również wewnętrznie implementuje interfejs Closeable i dlatego jeśli skaner nie jest jeszcze zamknięty, bazowy interfejs Readable wywołuje metodę close.
Dobrą praktyką programistyczną jest jawne zamykanie skanera za pomocą metody Close (), gdy skończysz z nim korzystać.
Uwaga: Jeśli obiekt Scanner jest zamknięty i podjęto próbę wyszukiwania, skutkuje to „IllegalStateException”.
Często Zadawane Pytania
Pytanie 1) Co to jest klasa Scanner w Javie?
Odpowiedź: Klasa Scanner jest częścią pakietu „java.util” języka Java i służy do odczytywania danych wejściowych różnych pierwotnych typów danych, takich jak int, float, stringi itp.
która z poniższych jest jedną z najpopularniejszych platform testowych?
P # 2) Jaka jest różnica między metodami next () i nextLine () klasy Scanner?
Odpowiedź: Metoda next () czyta dane wejściowe do spacji i umieszcza kursor w tej samej linii po przeczytaniu wejścia. Jednak metoda nextLine () odczytuje cały wiersz wejścia do końca wiersza, łącznie ze spacjami.
Pytanie 3) Co to jest hasNext () w Javie?
Odpowiedź: Metoda hasNext () jest jedną z metod Java Scanner. Ta metoda zwraca wartość true, jeśli skaner ma inny token w danych wejściowych.
Pytanie 4) Czy musisz zamknąć klasę skanera?
Odpowiedź: Lepiej jest zamknąć klasę Scanner, ale nie jest to obowiązkowe, tak jakby nie była ona zamknięta. Podstawowy interfejs Readable klasy Scanner wykonuje zadanie za Ciebie. Kompilator może wyświetlać ostrzeżenie, jeśli nie jest zamknięty.
Dlatego dobrą praktyką programistyczną jest zawsze zamykanie skanera.
P # 5) Jaki jest cel „system.in” w klasie Scanner?
Odpowiedź: Używając „System.in” w klasie Scanner, zezwalasz skanerowi na odczyt z klawiatury podłączonej do standardowych danych wejściowych.
Wniosek
W tym samouczku widzieliśmy klasę Scanner i wszystkie jej szczegóły, w tym interfejs API i implementację. Klasa skanera służy do odczytywania danych wejściowych z różnych nośników, takich jak standardowe wejście, pliki, kanały IO, łańcuchy z / bez wyrażeń regularnych itp.
Chociaż Scanner nie jest bardzo wydajnym sposobem odczytywania danych wejściowych, jest jednym z najłatwiejszych. Scanner umożliwia odczytywanie danych wejściowych różnych pierwotnych typów danych, takich jak int, float, strings, itp. Używając łańcuchów znaków jako obiektu wejściowego dla klasy Scanner, możesz również używać z nimi wyrażeń regularnych.
Klasa Scanner umożliwia także odczytywanie danych wejściowych przez dopasowanie pewnego wzorca lub separatora.
Podsumowując, użycie klasy Scanner w Javie pozostaje najłatwiejszym i preferowanym sposobem odczytu danych wejściowych.
=> Sprawdź idealny przewodnik szkoleniowy języka Java tutaj.
rekomendowane lektury
- Co to jest wektor Java | Samouczek klasy wektorowej Java z przykładami
- Java Array Class Tutorial - klasa java.util.Arrays z przykładami
- Samouczek JAVA dla początkujących: ponad 100 praktycznych samouczków wideo Java
- Interfejs Java i samouczek klasy abstrakcyjnej z przykładami
- Samouczek dotyczący refleksji w języku Java z przykładami
- Postrzępiona tablica w Javie - samouczek z przykładami
- Samouczek dotyczący długości tablicy w języku Java z przykładami kodu
- Samouczek dotyczący ciągów Java | Metody ciągów Java z przykładami