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 |
| 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.