Pri programovaní v jazyku Java alebo v inom jazyku budete pravdepodobne potrebovať použiť vstupné informácie od používateľa. Java poskytuje mnoho rôznych spôsobov získavania informácií o používateľoch, ale najbežnejšou a možno najľahšie implementovateľnou metódou je použitie objektu Scanner.
Kroky
Metóda 1 z 2: Videá
Krok 1. Importujte triedu skenera
Môžete sa buď rozhodnúť importovať súbor
java.util. Scanner
triedu alebo celú
java.util
balík. Ak chcete importovať triedu alebo balík, pridajte na začiatok kódu jeden z nasledujúcich riadkov:
import java.util. Scanner; // Toto importuje iba triedu Scanner. import java.util.*; // Toto importuje celý balík java.util.
Krok 2. Inicializujte nový objekt Scanner prejdením
System.in
vstupný tok do konštruktora.
System.in
je štandardný vstupný tok, ktorý je už otvorený a je pripravený dodávať vstupné údaje. Tento stream zvyčajne zodpovedá vstupu z klávesnice.
Skener userInputScanner = nový skener (System.in);
Krok 3. Prečítajte si rôzne druhy vstupných údajov, ktoré používateľ zadá
Trieda Scanner okrem získavania reťazcov podporuje aj získavanie primitívov, ako sú int, byte, short, long.
-
Tu je niekoľko metód, ktoré sú k dispozícii prostredníctvom triedy Scanner:
-
Prečítajte si bajt -
nextByte ()
-
Prečítajte si krátke -
nextShort ()
-
Prečítajte si int -
nextInt ()
-
Čítajte dlho -
nextLong ()
-
Prečítajte si plavák -
nextFloat ()
-
Prečítajte si dvojnásobok -
nextDouble ()
-
Prečítajte si boolean -
nextBoolean ()
-
Prečítajte si celý riadok -
nextLine ()
-
Prečítajte si slovo -
Ďalšie()
-
-
Tu je príklad programu, ktorý používa rôzne metódy triedy Scanner na získanie rôznych typov vstupov:
import java.util. Scanner; public class ScannerPriklad {public static void main (String args) {// Spustenie nového skenera Skener userInputScanner = nový skener (System.in); // Testovanie nextLine (); System.out.println ("\ nAko sa voláte?"); Názov reťazca = userInputScanner.nextLine (); // Testovanie nextInt (); System.out.print („Koľko máte mačiek?“); int numberOfCats = userInputScanner.nextInt (); // Testovanie nextDouble (); System.out.print („Koľko peňazí máte vo svojej peňaženke? $“); double moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nAhoj" + meno + "! V peňaženke máte" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "a $" + moneyInWallet + ". / N"); }}
Metóda 2 z 2: Zaobchádzanie s výnimkami
Krok 1. Zaobchádzajte s výnimkami zo vstupu
An
InputMismatchException
sa vyvolá, keď používateľ zadá údaje, ktoré sa nezhodujú s požadovaným typom. Ak napríklad používateľ zadá reťazec, keď je požiadaný o int, program vyvolá príponu
InputMismatchException
a výjazd. Existuje niekoľko spôsobov, ako zvládnuť túto výnimku a vyriešiť tento problém tak, aby bol váš program spoľahlivý.
Krok 2. Na zvládnutie problému použite blok try-catch
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Spustenie nového skenera Skener userInputScanner = nový skener (System.in); // Testovanie nextLine (); System.out.print ("\ nAko sa voláte?"); Názov reťazca = userInputScanner.nextLine (); // Testovanie nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print („Koľko mačiek máš?“); skúste {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testovanie nextDouble (); validInput = false; zdvojnásobenie peňažnej peňaženky = 0,0; while (! validInput) {System.out.print ("Koľko peňazí máte vo svojej peňaženke? $"); skúste {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nAhoj" + meno + "! V peňaženke máte" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "a $" + moneyInWallet + ". / n "); }}
Upozorňujeme, že musíme importovať
java.util. InputMismatchException
aby ste mohli používať
InputMismatchException
Pridáva sa
userInputScanner.nextLine ();
Krok 3. Prípadne urobte používateľský vstup spoľahlivým tak, že zo skenera vezmete iba ďalšie riadky
Týmto spôsobom môžeme zaistiť, že všetko, čo skener vráti, je objekt String a nevytvorí žiadne výnimky. Potom na konverziu reťazcov na celé čísla alebo zdvojnásobenie môžeme použiť triedy obalov Integer a Double.
import java.util. Scanner; public class ScannerPriklad {public static void main (String args) {// Spustenie nového skenera Skener userInputScanner = nový skener (System.in); // Testovanie nextLine (); System.out.print ("\ nAko sa voláte?"); Názov reťazca = userInputScanner.nextLine (); // Testovanie nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print („Koľko mačiek máš?“); Vstup reťazca = userInputScanner.nextLine (); skúste {numberOfCats = Integer.parseInt (vstup); validInput = true; } catch (NumberFormatException e) {validInput = false; }} // Testovanie nextDouble (); validInput = false; dvojnásobok moneyInWallet = 0,0; while (! validInput) {System.out.print ("Koľko peňazí máte vo svojej peňaženke? $"); Vstup reťazca = userInputScanner.nextLine (); skúste {moneyInWallet = Double.parseDouble (vstup); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nAhoj" + meno + "! V peňaženke máte" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "a $" + moneyInWallet + ". / n "); }}
Upozorňujeme, že tu sme nemuseli importovať súbor
NumberFormatException
Tiež sme nemuseli vymazať vyrovnávaciu pamäť pomocou
userInputScanner.nextLine ();
Tipy
- Ďalšie informácie o používaní triedy Scanner nájdete v rozhraní Scanner API.
- Na čítanie nasledujúceho slova vždy používajte.next () namiesto.nextLine (), pretože.nextLine () môže byť buggy.