När du programmerar i Java eller något annat språk kommer du troligen att behöva använda inmatningsinformation från en användare. Java erbjuder många olika metoder för att få in användarinformation, men den vanligaste och kanske enklaste att implementera metoden är att använda skannerobjektet.
Steg
Metod 1 av 2: Videor
Steg 1. Importera skannerklassen
Du kan antingen välja att importera
java.util. Scanner
klass eller hela
java.util
paket. För att importera en klass eller ett paket, lägg till en av följande rader i början av din kod:
importera java.util. Scanner; // Detta importerar bara skannerklassen. importera java.util.*; // Detta kommer att importera hela paketet java.util.
Steg 2. Initiera ett nytt skannerobjekt genom att passera
System. I
ingångsström till konstruktören.
System. I
är standardinmatningsströmmen som redan är öppen och redo att leverera ingångsdata. Vanligtvis motsvarar denna ström tangentbordsinmatning.
Scanner userInputScanner = ny Scanner (System.in);
Steg 3. Läs in olika typer av indata som användaren anger
Skannerklassen stöder att få primitiv som int, byte, kort, lång förutom att få strängar.
-
Här är några metoder som är tillgängliga via skannerklassen:
-
Läs en byte -
nextByte ()
-
Läs en kort -
nextShort ()
-
Läs en int -
nextInt ()
-
Läs med -
nextLong ()
-
Läs en flottör -
nextFloat ()
-
Läs en dubbel -
nästaDubbel ()
-
Läs en booleskt -
nästaBoolean ()
-
Läs en komplett rad -
nextLine ()
-
Läs ett ord -
Nästa()
-
-
Här är ett exempel på ett program som använder olika metoder i skannerklassen för att få olika typer av inmatningar:
importera java.util. Scanner; public class ScannerExample {public static void main (String args) {// Starta en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Testa nextLine (); System.out.println ("\ nVad är ditt namn?"); Strängnamn = userInputScanner.nextLine (); // Testa nextInt (); System.out.print ("Hur många katter har du?"); int numberOfCats = userInputScanner.nextInt (); // Testar nextDouble (); System.out.print ("Hur mycket pengar finns i din plånbok? $"); dubbel moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHälsa" + namn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "och $" + moneyInWallet + "i din plånbok. / N"); }}
Metod 2 av 2: Hantering av undantag
Steg 1. Hantera inmatningsundantag
Ett
InputMismatchException
kastas när användaren anger data som inte matchar den begärda typen. Till exempel, om användaren anger en sträng när en int efterfrågas, kommer programmet att kasta en
InputMismatchException
och avsluta. Det finns flera sätt att hantera detta undantag och lösa detta problem så att ditt program kan vara idiotsäkert.
Steg 2. Använd ett try-catch-block för att hantera
InputMismatchException
.
importera java.util. InputMismatchException; importera java.util. Scanner; public class ScannerExample {public static void main (String args) {// Starta en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Testa nextLine (); System.out.print ("\ nVad är ditt namn?"); Strängnamn = userInputScanner.nextLine (); // Testa nextInt (); booleska validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hur många katter har du?"); prova {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }}} // Testa nextDouble (); validInput = false; dubbel moneyInWallet = 0,0; medan (! validInput) {System.out.print ("Hur mycket pengar finns i din plånbok? $"); prova {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHälsa" + namn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "och $" + moneyInWallet + "i din plånbok. / n "); }}
Observera att vi måste importera
java.util. InputMismatchException
för att använda
InputMismatchException
Lägger till
userInputScanner.nextLine ();
Steg 3. Alternativt gör användarinmatningen idiotsäker genom att bara ta in nästa rader från skannern
På så sätt kan vi se till att allt som skannern returnerar är ett String -objekt och inte skapar några undantag. För att sedan konvertera strängarna till heltal eller dubbletter kan vi använda heltals- och dubbelomslagsklasserna.
importera java.util. Scanner; public class ScannerExample {public static void main (String args) {// Starta en ny Scanner Scanner userInputScanner = ny Scanner (System.in); // Testa nextLine (); System.out.print ("\ nVad är ditt namn?"); Strängnamn = userInputScanner.nextLine (); // Testa nextInt (); booleska validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Hur många katter har du?"); String input = userInputScanner.nextLine (); prova {numberOfCats = Integer.parseInt (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }}} // Testa nextDouble (); validInput = false; dubbel moneyInWallet = 0,0; medan (! validInput) {System.out.print ("Hur mycket pengar finns i din plånbok? $"); String input = userInputScanner.nextLine (); prova {moneyInWallet = Double.parseDouble (input); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHälsa" + namn + "! Du har" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "och $" + moneyInWallet + "i din plånbok. / n "); }}
Observera att här behövde vi inte importera
NumberFormatException
Vi behövde inte heller rensa bufferten med
userInputScanner.nextLine ();
Tips
- Se Scanner API för mer information om hur du använder skannerklassen.
- Använd alltid.next () istället för.nextLine () för att läsa nästa ord, eftersom.nextLine () kan vara buggy.