W Javie Scanner jest klasą w pakiecie java.util używaną do uzyskiwania danych wejściowych typów pierwotnych, takich jak int, double itp. oraz ciągów znaków.
Użycie klasy Scanner w Javie to najłatwiejszy sposób odczytania danych wejściowych w programie Java, chociaż nie jest zbyt wydajny, jeśli potrzebujesz metody wprowadzania danych w scenariuszach, w których czas jest ograniczeniem, jak w programowaniu konkurencyjnym.
Typy danych wejściowych skanera Java
Klasa Scanner pomaga pobrać standardowy strumień wejściowy w Javie. Potrzebujemy więc metod wyodrębnienia danych ze strumienia. Metody stosowane do wyodrębniania danych są wymienione poniżej:
int w ciągu
| metoda | Opis |
|---|---|
| następnyBoolean() | Używany do odczytu wartości logicznej |
| następny bajt() | Służy do odczytu wartości bajtu |
| następnyDouble() | Używany do odczytu wartości Double |
| następnyFloat() | Służy do odczytu wartości zmiennoprzecinkowej |
| następnyInt() | Używany do odczytu wartości Int |
| Używany do odczytu wartości linii | |
| następnyDługi() | Używany do odczytu wartości długiej |
| następny krótki() rodzaje drzew binarnych | Używany do odczytu wartości krótkiej |
Przyjrzyjmy się fragmentowi kodu umożliwiającego odczytanie danych różnych typów.
Przykłady klasy skanera Java
Przykład 1:
Jawa
// Java program to read data of various types> // using Scanner class.> import> java.util.Scanner;> // Driver Class> public> class> ScannerDemo1 {> >// main function> >public> static> void> main(String[] args)> >{> >// Declare the object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// String input> >String name = sc.nextLine();> >// Character input> >char> gender = sc.next().charAt(>0>);> >// Numerical data input> >// byte, short and float can be read> >// using similar-named functions.> >int> age = sc.nextInt();> >long> mobileNo = sc.nextLong();> >double> cgpa = sc.nextDouble();> >// Print the values to check if the input was> >// correctly obtained.> >System.out.println(>'Name: '> + name);> >System.out.println(>'Gender: '> + gender);> >System.out.println(>'Age: '> + age);> >System.out.println(>'Mobile Number: '> + mobileNo);> >System.out.println(>'CGPA: '> + cgpa);> >}> }> |
>
lista do tablicy Java
>
Wejście
Geek F 40 9876543210 9.9>
Wyjście
Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>
Czasami musimy sprawdzić, czy następna wartość, którą czytamy, jest określonego typu lub czy wprowadzanie danych się zakończyło (napotkano znacznik EOF).
Następnie sprawdzamy, czy wejście skanera jest tego typu, jakie chcemy, za pomocą funkcji hasNextXYZ(), gdzie XYZ to typ, który nas interesuje. Funkcja zwraca wartość true, jeśli skaner posiada token tego typu, w przeciwnym razie false. Na przykład w poniższym kodzie użyliśmy funkcji hasNextInt(). Aby sprawdzić ciąg znaków, używamy funkcji hasNextLine(). Podobnie, aby sprawdzić pojedynczy znak, używamy hasNext().charAt(0).
Przykład 2:
Spójrzmy na fragment kodu, aby odczytać kilka liczb z konsoli i wydrukować ich średnią.
Jawa
mysql pokaż wszystkich użytkowników
// Java program to read some values using Scanner> // class and print their mean.> import> java.util.Scanner;> public> class> ScannerDemo2 {> >public> static> void> main(String[] args)> >{> >// Declare an object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// Initialize sum and count of input elements> >int> sum =>0>, count =>0>;> >// Check if an int value is available> >while> (sc.hasNextInt()) {> >// Read an int value> >int> num = sc.nextInt();> >sum += num;> >count++;> >}> >if> (count>>0>) {> >int> mean = sum / count;> >System.out.println(>'Mean: '> + mean);> >}> >else> {> >System.out.println(> >'No integers were input. Mean cannot be calculated.'>);> >}> >}> }> |
wyrażenia lambda w Javie
>
>
Wejście
1 2 3 4 5>
Wyjście
Mean: 3>
Ważne uwagi dotyczące klasy skanera Java
- Aby utworzyć obiekt klasy Scanner, zazwyczaj przekazujemy predefiniowany obiekt System.in, który reprezentuje standardowy strumień wejściowy. Jeśli chcemy odczytać dane wejściowe z pliku, możemy przekazać obiekt klasy File.
- Aby odczytać wartości liczbowe określonego typu danych XYZ, należy użyć funkcji nextXYZ(). Na przykład, aby odczytać wartość typu short, możemy użyć metody nextShort()
- Aby odczytać ciągi znaków, używamy nextLine().
- Aby odczytać pojedynczy znak, używamy next().charAt(0). Funkcja next() zwraca następny token/słowo na wejściu jako ciąg znaków, a funkcja charAt(0) zwraca pierwszy znak w tym ciągu.
- Klasa Scanner odczytuje całą linię i dzieli ją na tokeny. Tokeny to małe elementy, które mają pewne znaczenie dla kompilatora Java. Załóżmy na przykład, że istnieje ciąg wejściowy: Jak się masz
W tym przypadku obiekt skanera odczyta całą linię i podzieli ciąg na tokeny: Jak, jak się masz i Ty. Następnie obiekt wykonuje iterację po każdym tokenie i odczytuje każdy token przy użyciu różnych metod.