Pri programiranju v Javi ali katerem koli drugem jeziku boste najverjetneje morali uporabiti vhodne podatke uporabnika. Java ponuja veliko različnih načinov za pridobivanje informacij o uporabnikih, vendar je najpogostejša in morda najlažja izvedljiva metoda uporaba predmeta Scanner.
Koraki
Metoda 1 od 2: Videoposnetki
Korak 1. Uvozite razred Scanner
Izberete lahko uvoz datoteke
java.util. Scanner
razreda ali celotnega
java.util
paket. Če želite uvoziti razred ali paket, dodajte eno od naslednjih vrstic na sam začetek kode:
uvoz java.util. Scanner; // To bo uvozilo samo razred Scanner. uvoz java.util.*; // S tem boste uvozili celoten paket java.util.
Korak 2. Inicializirajte nov objekt optičnega bralnika, tako da podate datoteko
System.in
vhodni tok v konstruktor.
System.in
je standardni vhodni tok, ki je že odprt in pripravljen za vnos vhodnih podatkov. Običajno ta tok ustreza vnosu s tipkovnice.
Optični bralnik userInputScanner = nov bralnik (System.in);
Korak 3. Preberite različne vrste vhodnih podatkov, ki jih uporabnik vnese
Razred Scanner poleg pridobivanja nizov podpira pridobivanje primitiv, kot so int, byte, short, long.
-
Tukaj je nekaj metod, ki so na voljo v razredu Scanner:
-
Preberite bajt -
nextByte ()
-
Preberi na kratko -
nextShort ()
-
Preberi int -
nextInt ()
-
Preberite dolgo -
nextLong ()
-
Preberite plovec -
nextFloat ()
-
Preberite dvojno -
nextDouble ()
-
Preberite logično vrednost -
nextBoolean ()
-
Preberite celotno vrstico -
nextLine ()
-
Preberi besedo -
Naslednji()
-
-
Tu je primer programa, ki uporablja različne metode razreda Scanner za pridobivanje različnih vrst vnosa:
uvoz java.util. Scanner; javni razred ScannerExample {public static void main (String args) {// Zaženite nov bralnik optičnega bralnika userInputScanner = nov skener (System.in); // Testiranje nextLine (); System.out.println ("\ nKako ti je ime?"); Ime niza = userInputScanner.nextLine (); // Testiranje nextInt (); System.out.print ("Koliko mačk imate?"); int numberOfCats = userInputScanner.nextInt (); // Testiranje nextDouble (); System.out.print ("Koliko denarja je v vaši denarnici? $"); dvojni moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nZdravo" + ime + "! V denarnici imate" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "in $" + moneyInWallet + ". / N"); }}
Metoda 2 od 2: Ravnanje z izjemami
Korak 1. Obravnavajte izjeme pri vnosu
An
InputMismatchException
se vrne, ko uporabnik vnese podatke, ki se ne ujemajo z zahtevano vrsto. Na primer, če uporabnik vnese niz, ko se zahteva int, bo program vrgel datoteko
InputMismatchException
in zapustite. To izjemo lahko odpravite na več načinov, da odpravite to težavo, da bo vaš program brezhiben.
Korak 2. Uporabite blok try-catch za upravljanje
InputMismatchException
.
import java.util. InputMismatchException; uvoz java.util. Scanner; javni razred ScannerExample {public static void main (String args) {// Zaženite nov bralnik optičnega bralnika userInputScanner = nov skener (System.in); // Testiranje nextLine (); System.out.print ("\ nKako ti je ime?"); Ime niza = userInputScanner.nextLine (); // Testiranje nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Koliko mačk imate?"); poskusite {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testiranje nextDouble (); validInput = false; dvojni denarInWallet = 0,0; while (! validInput) {System.out.print ("Koliko denarja je v vaši denarnici? $"); poskusite {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nZdravo" + ime + "! V denarnici imate" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "in $" + moneyInWallet + ". / n "); }}
Upoštevajte, da moramo uvoziti
java.util. InputMismatchException
za uporabo
InputMismatchException
Dodajanje
userInputScanner.nextLine ();
Korak 3. Druga možnost je, da uporabniški vnos naredite brezhiben, tako da v bralnik vnesete le naslednje vrstice
Na ta način lahko zagotovimo, da je vse, kar skener vrne, objekt String in ne bo ustvaril nobenih izjem. Nato za pretvorbo nizov v cela števila ali dvojnike lahko uporabimo razrede Integer in Double wrapper.
uvoz java.util. Scanner; javni razred ScannerExample {public static void main (String args) {// Zaženite nov bralnik optičnega bralnika userInputScanner = nov skener (System.in); // Testiranje nextLine (); System.out.print ("\ nKako ti je ime?"); Ime niza = userInputScanner.nextLine (); // Testiranje nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Koliko mačk imate?"); Niz input = userInputScanner.nextLine (); poskusite {numberOfCats = Integer.parseInt (vnos); validInput = true; } catch (NumberFormatException e) {validInput = false; }} // Testiranje nextDouble (); validInput = false; dvojni denarInWallet = 0,0; while (! validInput) {System.out.print ("Koliko denarja je v vaši denarnici? $"); Niz input = userInputScanner.nextLine (); poskusite {moneyInWallet = Double.parseDouble (vnos); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nZdravo" + ime + "! V denarnici imate" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "in $" + moneyInWallet + ". / n "); }}
Upoštevajte, da nam tukaj ni bilo treba uvoziti
NumberFormatException
Prav tako nam ni bilo treba počistiti medpomnilnika z uporabo
userInputScanner.nextLine ();
Nasveti
- Za več informacij o uporabi razreda Scanner si oglejte Scanner API.
- Za branje naslednje besede vedno uporabite.next () namesto.nextLine (), saj je.nextLine () lahko napačen.