logo

Třída skeneru v Javě

V Javě je Scanner třída v balíku java.util používaná pro získávání vstupu primitivních typů jako int, double atd. a strings.

Použití třídy Scanner v Javě je nejjednodušší způsob, jak číst vstup v programu Java, i když není příliš efektivní, pokud chcete metodu zadávání pro scénáře, kde je časový limit jako v konkurenčním programování.

Typy vstupu skeneru Java

Třída Scanner pomáhá převzít standardní vstupní proud v Javě. Potřebujeme tedy nějaké metody k extrakci dat z proudu. Metody používané pro extrakci dat jsou uvedeny níže:



java třídící seznam polí

Metoda

Popis

nextBoolean()

Používá se pro čtení booleovské hodnoty

dalšíByte()

Používá se pro čtení hodnoty Byte

nextDouble()

Používá se pro čtení hodnoty Double

nextFloat()

Používá se pro čtení hodnoty Float

nextInt()

Používá se pro čtení hodnoty Int

další řádek()

Používá se pro čtení hodnoty řádku

nextLong()

Používá se pro čtení dlouhé hodnoty

nextShort()

Používá se pro čtení krátké hodnoty

Podívejme se na fragment kódu pro čtení dat různých typů dat.

Příklady třídy Java Scanner Class

Příklad 1:

Jáva

příklady programování v pythonu




// 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);> >}> }>

>

>

Vstup

Geek F 40 9876543210 9.9>

Výstup

Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>

Někdy musíme zkontrolovat, zda další hodnota, kterou čteme, je určitého typu nebo zda vstup skončil (nalezena značka EOF).

Poté pomocí funkcí hasNextXYZ() zkontrolujeme, zda je vstup skeneru požadovaného typu, kde XYZ je typ, který nás zajímá. Funkce vrátí hodnotu true, pokud má skener token tohoto typu, v opačném případě vrací hodnotu false. Například v níže uvedeném kódu jsme použili hasNextInt(). Ke kontrole řetězce používáme hasNextLine(). Podobně pro kontrolu jednoho znaku použijeme hasNext().charAt(0).

Příklad 2:

Podívejme se na úryvek kódu, abychom načetli některá čísla z konzole a vytiskli jejich průměr.

Jáva




// 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.'>);> >}> >}> }>

>

neprůhlednost přechodu css
>

Vstup

1 2 3 4 5>

Výstup

Mean: 3>

Důležité body o třídě Java Scanner

  • Pro vytvoření objektu třídy Scanner obvykle předáme předdefinovaný objekt System.in, který představuje standardní vstupní proud. Můžeme předat objekt třídy File, pokud chceme číst vstup ze souboru.
  • Chcete-li číst číselné hodnoty určitého datového typu XYZ, použijte funkci nextXYZ(). Chcete-li například přečíst hodnotu typu short, můžeme použít nextShort()
  • Ke čtení řetězců používáme nextLine().
  • Ke čtení jednoho znaku použijeme next().charAt(0). funkce next() vrací další token/slovo na vstupu jako řetězec a funkce charAt(0) vrací první znak v tomto řetězci.
  • Třída Scanner přečte celý řádek a rozdělí řádek na tokeny. Tokeny jsou malé prvky, které mají pro kompilátor Java určitý význam. Předpokládejme například, že existuje vstupní řetězec: How are you
    V tomto případě objekt skeneru přečte celý řádek a rozdělí řetězec na tokeny: Jak, jste a vy. Objekt pak iteruje každý token a čte každý token pomocí jeho různých metod.