Når du programmerer i Java eller et andet sprog, skal du sandsynligvis bruge inputoplysninger fra en bruger. Java giver mange forskellige metoder til at få brugerinformation, men den mest almindelige og måske letteste at implementere metode er at bruge scannerobjektet.
Trin
Metode 1 af 2: Videoer
Trin 1. Importer scannerklassen
Du kan enten vælge at importere
java.util. Scanner
klasse eller hele
java.util
pakke. For at importere en klasse eller en pakke skal du tilføje en af følgende linjer til begyndelsen af din kode:
import java.util. Scanner; // Dette importerer kun Scanner -klassen. import java.util.*; // Dette importerer hele java.util -pakken.
Trin 2. Initialiser et nyt scannerobjekt ved at passere
System. I
inputstrøm til konstruktøren.
System. I
er standardindgangsstrømmen, der allerede er åben og klar til at levere inputdata. Typisk svarer denne strøm til tastaturindgang.
Scanner userInputScanner = ny Scanner (System.in);
Trin 3. Læs forskellige slags inputdata, som brugeren indtaster
Scanner -klassen understøtter at få primitiver som int, byte, kort, lang ud over at få strenge.
-
Her er nogle metoder, der er tilgængelige via Scanner -klassen:
-
Læs en byte -
nextByte ()
-
Læs en kort -
nextShort ()
-
Læs en int -
nextInt ()
-
Læs længe -
nextLong ()
-
Læs en float -
nextFloat ()
-
Læs en dobbelt -
næsteDobbelt ()
-
Læs en boolsk -
næsteBoolsk ()
-
Læs en komplet linje -
nextLine ()
-
Læs et ord -
Næste()
-
-
Her er et eksempel på et program, der bruger forskellige metoder i Scanner -klassen til at få forskellige typer input:
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Test af nextLine (); System.out.println ("\ nHvad er dit navn?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); System.out.print ("Hvor mange katte har du?"); int numberOfCats = userInputScanner.nextInt (); // Test næsteDouble (); System.out.print ("Hvor mange penge er der i din tegnebog? $"); dobbelt moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHej" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i din tegnebog. / N"); }}
Metode 2 af 2: Håndtering af undtagelser
Trin 1. Håndter inputundtagelser
An
InputMismatchException
kastes, når brugeren indtaster data, der ikke matcher den ønskede type. For eksempel, hvis brugeren indtaster en streng, når der bliver bedt om en int, kaster programmet en
InputMismatchException
og afslut. Der er flere måder at håndtere denne undtagelse på og løse dette problem, så dit program kan være idiotsikkert.
Trin 2. Brug en try-catch-blok til at håndtere
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Test af nextLine (); System.out.print ("\ nHvad er dit navn?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); boolsk validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hvor mange katte har du?"); prøv {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }}} // Test næsteDouble (); validInput = false; dobbelt moneyInWallet = 0,0; mens (! validInput) {System.out.print ("Hvor mange penge er der i din tegnebog? $"); prøv {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHej" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i din tegnebog. / n "); }}
Bemærk, at vi skal importere
java.util. InputMismatchException
for at bruge
InputMismatchException
Tilføjelse
userInputScanner.nextLine ();
Trin 3. Alternativt kan du gøre brugerinputet idiotsikkert ved kun at indtaste de næste linjer fra scanneren
På denne måde kan vi sikre, at alt, hvad scanneren returnerer, er et String -objekt og ikke skaber undtagelser. For derefter at konvertere strengene til heltal eller fordoblinger, kan vi bruge klasserne Integer og Double wrapper.
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Test af nextLine (); System.out.print ("\ nHvad er dit navn?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); boolsk validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hvor mange katte har du?"); String input = userInputScanner.nextLine (); prøv {numberOfCats = Integer.parseInt (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }}} // Test næsteDouble (); validInput = false; dobbelt moneyInWallet = 0,0; mens (! validInput) {System.out.print ("Hvor mange penge er der i din tegnebog? $"); String input = userInputScanner.nextLine (); prøv {moneyInWallet = Double.parseDouble (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHej" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i din tegnebog. / n "); }}
Bemærk, at vi her ikke behøvede at importere
NumberFormatException
Vi behøvede heller ikke at rydde bufferen ved hjælp af
userInputScanner.nextLine ();
Tips
- Se Scanner -API'en for at få flere oplysninger om brug af Scanner -klassen.
- Brug altid.next () i stedet for.nextLine () for at læse det næste ord, da.nextLine () kan være buggy.