Wielokrotne wprowadzanie ciągów w Javie za pomocą skanera [z przykładem kodowania]
Opublikowany: 2021-02-05Spis treści
Wstęp
W pakiecie java.util skaner jest jedną z klas, które pomagają w zbieraniu wielu danych wejściowych typów prymitywnych, takich jak double, integer, stringi itp. Chociaż nie jest to skuteczny sposób odczytywania danych wejściowych w programie Java, w którym działa czas jako ograniczenie jest to niewątpliwie jeden z najłatwiejszych sposobów zbierania wielu danych wejściowych od użytkownika. W tym blogu dowiesz się, jak zbierać dane wejściowe z wielu ciągów od użytkownika w programie Java przy użyciu klasy skanera.
Metody pobierania wielu danych wejściowych za pomocą skanera
Musisz zaimportować pakiet java.util do programu przed użyciem klasy Scanner. W poniższej tabeli wymieniono metody używane do pobierania wielu danych wejściowych różnych typów od użytkownika w programie Java.
metoda | Wejścia |
następnyInt() | Liczba całkowita |
następnyFloat() | Pływak |
następnyPodwójny() | Podwójnie |
następnyDługi() | Długi |
następnyKrótki() | Krótki |
Następny() | Pojedyncze słowo |
następnaLinia() | Linia strun |
następnaBoolean() | Boole'a |
Korzystanie z metody Java nextLine()
Metoda java.util.Scanner.nextLine() zwraca wiersz, który został pominięty przez przesunięcie skanera poza bieżący wiersz. Jeśli separator linii jest podany na końcu bieżącego wiersza, ta metoda wyklucza go i zwraca resztę ciągu z bieżącego wiersza. Skaner jest ustawiany na początku następnego wiersza i odczytuje cały ciąg, łącznie z białymi znakami słów.
Składnia metody nextLine() wygląda następująco:
Ciąg publiczny nextLine()
Ta metoda zgłasza następujące dwa wyjątki:

- NoSuchElementException — jeśli ciąg jest pusty lub nie znaleziono wiersza.
- IllegalStateException — jeśli skaner jest zamknięty.
Przykład
Poniższy przykład ilustruje, w jaki sposób metoda java.util.Scanner.nextLine() zbiera wiele danych wejściowych od użytkownika.
importuj java.util.Scanner; klasa publiczna SacnnerDemoMultipleString { public static void main(String[] args) { Demo skanera = nowy skaner(System.in); System.out.print("Proszę wprowadzić wiele danych, które chcesz wydrukować: "); //pobiera liczbę całkowitą String[] string = new String [demo.nextInt()]; //zużywanie <enter> z wejścia powyżej demo.nextLine(); for (int i = 0; i < string.length; i++) { string[i] = demo.nextLine(); } System.out.println("\nWprowadziłeś następujące dane wejściowe: "); //for-each pętla do wydrukowania ciągu for(String string: string) { System.out.println(str); // zamknij skaner skaner.zamknij(); } } } |
Powyższy program wyświetli następujące dane wyjściowe
Wprowadź wiele danych wejściowych, które chcesz wydrukować: 7 Misza Złupić Robert Harvey Jill Rachel Jennifer Wprowadziłeś następujące dane: Misza Złupić Robert Harvey Jill Rachel Jennifer |
Korzystanie z metody Java nextInt()
Metoda java.util.Scanner.nextInt() skanuje dane wejściowe podane przez użytkownika jako liczbę całkowitą. Jeśli zostanie znaleziona liczba całkowita, skaner przechodzi poza pasujące dane wejściowe.
Składnia metody nextInt() jest następująca:
Public int nextInt()
Ta metoda zgłasza następujące trzy wyjątki:
- InputMismatchException — jeśli następny token nie pasuje do wyrażenia regularnego liczby całkowitej lub jeśli następny token jest poza zakresem.
- NoSuchElementException — jeśli dane wejściowe są wyczerpane.
- IllegalStateException — jeśli skaner jest zamknięty.
Przykład
Poniższy przykład ilustruje sposób, w jaki metoda java.util.Scanner.nextInt() zbiera wiele danych wejściowych od użytkownika.
// Program Java do skanowania liczb całkowitych za pomocą Skanera // klasa i wypisz ich średnią. importuj java.util.Scanner; public class ScannerDemoInteger { public static void main(String[] args) { Demo skanera = nowy skaner(System.in); // Zainicjuj sumę i liczbę elementów wejściowych suma int = 0, liczba = 0; ![]() // Sprawdź, czy występuje wartość całkowita while (demo.hasNextInt()) { // Skanuj wartość całkowitą int liczba = demo.nextInt(); suma += liczba; liczyć++; } int średnia = suma / liczba; System.out.println("Średnia: " + średnia); } } |
Powyższy program jest zasilany następującymi danymi wejściowymi:
101 223 238 892 99 500 728 |
Powyższy program wypisze następujące dane wyjściowe:
Średnia: 397 |
Przeczytaj także: Projekt Java MVC
Korzystanie z metody nextDouble() w języku Java
Metoda java.util.Scanner.nextDouble() skanuje dane wejściowe podane przez użytkownika jako podwójne. Jeśli zostanie znalezione wyrażenie regularne zmiennoprzecinkowe, skaner przejdzie poza pasujące dane wejściowe.
Składnia metody nextInt() jest następująca:
public double nextDouble()

Ta metoda zgłasza następujące trzy wyjątki:
- InputMismatchException — jeśli następny token nie pasuje do wyrażenia regularnego zmiennoprzecinkowego lub jeśli następny token jest poza zakresem.
- NoSuchElementException — jeśli dane wejściowe są wyczerpane.
- IllegalStateException — jeśli skaner jest zamknięty.
Przykład
W przykładzie pokazano, jak metoda java.util.Scanner.nextDouble() zbiera wiele danych wejściowych od użytkownika.
// program Java do skanowania float za pomocą skanera importuj java.util.Scanner; public class ScannerDoubleRegularExpression { public static void main(String[] args) { Nowy ciąg = „Dzień dobry! 3 + 3,0 = 6 prawda”; // napisz nowy obiekt skanera z określonym String Object Demo skanera = nowe skanery; // użyj ustawień regionalnych US, aby móc zidentyfikować dublety w łańcuchu demo.useLocale(Locale.US); // wyszukaj następny podwójny token i wydrukuj go while (demo.hasNext()) { // jeśli następny jest double, print found i float wyrażenie regularne if (demo.maNextDouble()) { System.out.println("Znaleziono:" + demo.nextDouble()); } // jeśli nie znaleziono podwójnego wyrażenia regularnego, wypisz „Nie znaleziono” i token System.out.println("Nie znaleziono:" + demo.next()); } // zamknij skaner skaner.zamknij(); } } |
Powyższy program da w wyniku następujące dane wyjściowe:
Nie znaleziono: dobry Nie znaleziono: rano! Znaleziono: 3,0 Nie znaleziono: + Znaleziono: 3,0 Nie znaleziono: = Znaleziono: 6,0 Nie znaleziono: prawda |
Wniosek
Na przykład kody podane na tym blogu są celem i mogą być modyfikowane zgodnie z indywidualnymi potrzebami. Jeśli chcesz dowiedzieć się więcej o tworzeniu oprogramowania w języku Java i pełnym stosie, sprawdź program Executive PG UpGrad i IIIT-B w zakresie tworzenia pełnego stosu oprogramowania, który jest przeznaczony dla pracujących profesjonalistów i oferuje ponad 500 godzin rygorystycznego szkolenia, 9+ projekty i zadania, status absolwentów IIIT-B, praktyczne praktyczne projekty zwieńczenia i pomoc w pracy z najlepszymi firmami.
Co to jest klasa Scanner w Javie?
Klasa Scanner umożliwia odczytywanie wartości z klawiatury bez używania danych wejściowych konsoli Java. Wejście konsoli Java jest wolne, podobnie jak przekierowanie. Skaner jest szybszy i wygodniejszy, dlatego należy go używać zamiast danych wejściowych konsoli Java. Scanner używa zwykłego strumienia wejściowego Javy, dzięki czemu można go łączyć z innymi parserami. Skaner jest również łatwiejszy w użyciu niż wejście konsoli Java. Scanner ma trzy główne podklasy, a mianowicie BufferedReader, InputStreamReader i FileReader. Najbardziej ogólnym z nich jest BufferedReader. BufferedReader może czytać wszystko, co może być odczytane przez InputStreamReader, i ma jedną dużą zaletę: bufor. Bufor może przechowywać jedną linię na raz. Strumień wejściowy nie ma w ogóle bufora: kiedy wywołujesz next(), zwraca wartość. Oznacza to, że musisz zebrać wartości, zanim będziesz mógł cokolwiek z nimi zrobić. Skaner zrobi to za Ciebie.
Co to jest konstruktor ciągów w Javie?
Konstruktor ciągów to nowy typ klasy do tworzenia ciągów. Klasa konstruktora ciągów została wprowadzona w Javie od wersji 1.3. Pozwala na tworzenie ciągu poprzez łączenie kilku ciągów i automatycznie zmienia swój rozmiar, gdy dodasz do niego więcej ciągów. W porównaniu z konkatenacją ciągów, używanie konstruktora ciągów jest szybsze i elastyczne, choć mniej czytelne. Obiekty StringBuilder to obiekty używane do tworzenia wartości String. Obiekty StringBuilder mają wiele metod.
Co to jest InputStreamReader w Javie?
InputStreamReader odczytuje strumień znaków ze strumienia wejściowego i dekoduje je do określonego kodowania znaków. Zapewnia łatwy sposób konwertowania strumieni znaków z jednego kodowania na inne. InputStreamReader odczytuje bajty ze strumienia bazowego i konwertuje je na znaki przy użyciu określonego kodowania zestawu znaków. Jest to klasa używana do konwersji danych strumienia bajtów na dane strumienia znaków. Strumień bajtów reprezentuje dane binarne, a strumień znaków reprezentuje tekst.