As u in Java of in enige ander taal programmeer, moet u waarskynlik invoerinligting van 'n gebruiker gebruik. Java bied baie verskillende metodes om gebruikersinligting in te gaan, maar die mees algemene en miskien maklikste metode is om die Scanner -voorwerp te gebruik.
Stappe
Metode 1 van 2: Video's
Stap 1. Voer die skandeerderklas in
U kan óf kies om die
java.util. Scanner
klas of die geheel
java.util
pakket. Om 'n klas of pakket in te voer, voeg een van die volgende reëls by die begin van u kode:
invoer java.util. Scanner; // Dit sal slegs die skandeerderklas invoer. invoer java.util.*; // Dit sal die hele java.util -pakket invoer.
Stap 2. Initialiseer 'n nuwe skandeerder -voorwerp deur die
Stelsel.in
invoerstroom na die konstruktor.
Stelsel.in
is die standaard insetstroom wat reeds oop is en gereed is om insetdata te verskaf. Gewoonlik stem hierdie stroom ooreen met sleutelbordinvoer.
Skandeerder userInputScanner = nuwe skandeerder (System.in);
Stap 3. Lees verskillende soorte insetdata in wat die gebruiker invoer
Die Scanner -klas ondersteun primitiewe soos int, byte, kort, lank, sowel as snare.
-
Hier is 'n paar metodes wat beskikbaar is deur die Scanner -klas:
-
Lees 'n greep -
nextByte ()
-
Lees 'n kort -
volgende Kort ()
-
Lees 'n int -
nextInt ()
-
Lees lank -
nextLong ()
-
Lees 'n vlot -
nextFloat ()
-
Lees 'n dubbel -
volgendeDubbel ()
-
Lees 'n boolean -
volgendeBoole ()
-
Lees 'n volledige reël -
nextLine ()
-
Lees 'n woord -
volgende ()
-
-
Hier is 'n voorbeeld van 'n program wat verskillende metodes van die Scanner -klas gebruik om verskillende tipes insette te kry:
invoer java.util. Scanner; openbare klas ScannerExample {public static void main (String args) {// Begin 'n nuwe Scanner Scanner userInputScanner = nuwe Scanner (System.in); // Toets nextLine (); System.out.println ("\ nWat is u naam?"); Stringnaam = userInputScanner.nextLine (); // Toets nextInt (); System.out.print ("Hoeveel katte het u?"); int numberOfCats = userInputScanner.nextInt (); // Toets nextDouble (); System.out.print ("Hoeveel geld is in u beursie? $"); dubbele geldInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHallo" + naam + "! U het" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "en $" + moneyInWallet + "in u beursie. / N"); }}
Metode 2 van 2: Die hantering van uitsonderings
Stap 1. Hanteer insette -uitsonderings
'N
InputMismatchException
word gegooi as die gebruiker data invoer wat nie ooreenstem met die aangevraagde tipe nie. Byvoorbeeld, as die gebruiker 'n string invoer wanneer 'n int gevra word, sal die program 'n
InputMismatchException
en verlaat. Daar is verskillende maniere om hierdie uitsondering te hanteer en hierdie probleem op te los, sodat u program onfeilbaar kan wees.
Stap 2. Gebruik 'n probeer-vang-blok om die
InputMismatchException
.
voer java.util. InputMismatchException in; invoer java.util. Scanner; openbare klas ScannerExample {public static void main (String args) {// Begin 'n nuwe Scanner Scanner userInputScanner = nuwe Scanner (System.in); // Toets nextLine (); System.out.print ("\ nWat is u naam?"); Stringnaam = userInputScanner.nextLine (); // Toets nextInt (); boolean validInput = false; int numberOfCats = 0; terwyl (! validInput) {System.out.print ("Hoeveel katte het jy?"); probeer {numberOfCats = userInputScanner.nextInt (); validInput = waar; } vang (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }}} // Toets volgendeDubbel (); validInput = false; dubbele geldInWallet = 0.0; terwyl (! validInput) {System.out.print ("Hoeveel geld is in u beursie? $"); probeer {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = waar; } vang (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHallo" + naam + "! Jy het" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "en $" + moneyInWallet + "in jou beursie. / n "); }}
Let daarop dat ons moet invoer
java.util. InputMismatchException
om die
InputMismatchException
Voeg by
userInputScanner.nextLine ();
Stap 3. Alternatiewelik kan u die invoer van die gebruiker onfeilbaar maak deur slegs die volgende reëls van die skandeerder in te neem
Op hierdie manier kan ons verseker dat alles wat die skandeerder teruggee 'n string -voorwerp is en dat daar geen uitsonderings is nie. Om die snare na heelgetalle of dubbels te omskep, kan ons die klasse Heelgetal en Dubbelomslag gebruik.
invoer java.util. Scanner; openbare klas ScannerExample {public static void main (String args) {// Begin 'n nuwe Scanner Scanner userInputScanner = nuwe Scanner (System.in); // Toets nextLine (); System.out.print ("\ nWat is u naam?"); Stringnaam = userInputScanner.nextLine (); // Toets nextInt (); boolean validInput = false; int numberOfCats = 0; terwyl (! validInput) {System.out.print ("Hoeveel katte het jy?"); Stringinvoer = userInputScanner.nextLine (); probeer {numberOfCats = Integer.parseInt (input); validInput = waar; } vang (NumberFormatException e) {validInput = false; }}} // Toets nextDouble (); validInput = false; dubbele geldInWallet = 0.0; terwyl (! validInput) {System.out.print ("Hoeveel geld is in u beursie? $"); Stringinvoer = userInputScanner.nextLine (); probeer {moneyInWallet = Double.parseDouble (invoer); validInput = waar; } vang (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHallo" + naam + "! Jy het" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "en $" + moneyInWallet + "in jou beursie. / n "); }}
Let daarop dat ons nie die
NumberFormatException
Ons hoef ook nie die buffer skoon te maak met behulp van
userInputScanner.nextLine ();
Wenke
- Sien die Skandeerder -API vir meer inligting oor die gebruik van die skandeerderklas.
- Gebruik altyd.next () in plaas van.nextLine () om die volgende woord te lees, want.nextLine () kan karig wees.