logo

Klasa skanera w Javie

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

następna linia()

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.