Når du programmerer i Java eller et annet språk, må du mest sannsynlig bruke inndatainformasjon fra en bruker. Java tilbyr mange forskjellige metoder for å få inn brukerinformasjon, men den vanligste og kanskje enkleste å implementere metoden er å bruke skannerobjektet.
Trinn
Metode 1 av 2: Videoer
Trinn 1. Importer skannerklassen
Du kan enten velge å importere
java.util. Scanner
klasse eller hele
java.util
pakke. For å importere en klasse eller en pakke, legg til en av følgende linjer helt i begynnelsen av koden:
importer java.util. Scanner; // Dette vil bare importere skannerklassen. import java.util.*; // Dette vil importere hele java.util -pakken.
Trinn 2. Initialiser et nytt skannerobjekt ved å passere
System. I
inndatastrøm til konstruktøren.
System. I
er standard inndatastrøm som allerede er åpen og klar til å levere inndata. Vanligvis tilsvarer denne strømmen tastaturinngang.
Skanner userInputScanner = ny skanner (System.in);
Trinn 3. Les inn forskjellige typer inndata som brukeren legger inn
Skannerklassen støtter å få primitiver som int, byte, kort, lang i tillegg til å få strenger.
-
Her er noen metoder som er tilgjengelige gjennom skannerklassen:
-
Les en byte -
nextByte ()
-
Les en kort -
nesteShort ()
-
Les en int -
nextInt ()
-
Les lenge -
nextLong ()
-
Les en flottør -
nextFloat ()
-
Les en dobbel -
nesteDobbelt ()
-
Les en boolsk -
nesteBolsk ()
-
Les hele linjen -
nextLine ()
-
Les et ord -
neste ()
-
-
Her er et eksempel på et program som bruker forskjellige metoder i skannerklassen for å få forskjellige typer input:
importer java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start a new Scanner Scanner userInputScanner = new Scanner (System.in); // Testing nextLine (); System.out.println ("\ nHva er navnet ditt?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); System.out.print ("Hvor mange katter har du?"); int numberOfCats = userInputScanner.nextInt (); // Testing nextDouble (); System.out.print ("Hvor mye penger er det i lommeboken din? $"); dobbel moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHei" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i lommeboken. / N"); }}
Metode 2 av 2: Håndtering av unntak
Trinn 1. Håndter inngangsunntak
An
InputMismatchException
kastes når brukeren legger inn data som ikke samsvarer med den forespurte typen. For eksempel, hvis brukeren angir en streng når det blir bedt om en int, vil programmet kaste en
InputMismatchException
og gå ut. Det er flere måter å håndtere dette unntaket og løse dette problemet på, slik at programmet ditt kan være idiotsikkert.
Trinn 2. Bruk en prøve-fang-blokk for å håndtere
InputMismatchException
.
import java.util. InputMismatchException; importer java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start a new Scanner Scanner userInputScanner = new Scanner (System.in); // Testing nextLine (); System.out.print ("\ nHva er navnet ditt?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); boolsk validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hvor mange katter har du?"); prøv {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }}} // Testing nextDouble (); validInput = false; dobbel moneyInWallet = 0,0; while (! validInput) {System.out.print ("Hvor mye penger er i lommeboken din? $"); prøv {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHei" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i lommeboken. / n "); }}
Vær oppmerksom på at vi må importere
java.util. InputMismatchException
for å bruke
InputMismatchException
Legger til
userInputScanner.nextLine ();
Trinn 3. Alternativt kan du gjøre brukerinngangen idiotsikker ved bare å ta inn de neste linjene fra skanneren
På denne måten kan vi sikre at alt skanneren returnerer er et strengobjekt og ikke vil skape noen unntak. For å konvertere strengene til heltall eller dobler, kan vi bruke klassene Heltall og Doble omslag.
importer java.util. Scanner; public class ScannerExample {public static void main (String args) {// Start a new Scanner Scanner userInputScanner = new Scanner (System.in); // Testing nextLine (); System.out.print ("\ nHva er navnet ditt?"); Stringnavn = userInputScanner.nextLine (); // Testing nextInt (); boolsk validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hvor mange katter har du?"); String input = userInputScanner.nextLine (); prøv {numberOfCats = Integer.parseInt (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }}} // Testing nextDouble (); validInput = false; dobbel moneyInWallet = 0,0; while (! validInput) {System.out.print ("Hvor mye penger er det i lommeboken din? $"); String input = userInputScanner.nextLine (); prøv {moneyInWallet = Double.parseDouble (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHei" + navn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "og $" + moneyInWallet + "i lommeboken. / n "); }}
Vær oppmerksom på at vi her ikke trengte å importere
NumberFormatException
Vi trengte heller ikke å tømme bufferen ved hjelp av
userInputScanner.nextLine ();
Tips
- Se Skanner -API for mer informasjon om bruk av skanner -klassen.
- Bruk alltid.next () i stedet for.nextLine () for å lese det neste ordet, da.nextLine () kan være buggy.