Wanneer u programmeert in Java of een andere taal, zult u hoogstwaarschijnlijk invoerinformatie van een gebruiker moeten gebruiken. Java biedt veel verschillende methoden voor het verkrijgen van gebruikersinformatie, maar de meest gebruikelijke en misschien wel het gemakkelijkst te implementeren methode is het gebruik van het Scanner-object.
Stappen
Methode 1 van 2: Video's
Stap 1. Importeer de Scanner-klasse
U kunt ervoor kiezen om de
java.util. Scanner
klas of de hele
java.util
pakket. Om een klasse of pakket te importeren, voegt u een van de volgende regels toe aan het begin van uw code:
java.util. Scanner importeren; // Hiermee wordt alleen de Scanner-klasse geïmporteerd. import java.util.*; // Hiermee wordt het hele java.util-pakket geïmporteerd.
Stap 2. Initialiseer een nieuw Scanner-object door de
systeem.in
invoerstroom naar de constructor.
systeem.in
is de standaard invoerstroom die al open is en klaar is om invoergegevens te leveren. Meestal komt deze stream overeen met invoer via het toetsenbord.
Scanner userInputScanner = nieuwe scanner (System.in);
Stap 3. Lees verschillende soorten invoergegevens in die de gebruiker invoert
De klasse Scanner ondersteunt het verkrijgen van primitieven zoals int, byte, short, long naast het verkrijgen van strings.
-
Hier zijn enkele methoden die beschikbaar zijn via de Scanner-klasse:
-
Lees een byte -
volgendeByte()
-
Lees een korte -
volgendeKorte()
-
Lees een int -
volgendeInt()
-
Doorlezen -
volgendeLang()
-
Lees een float -
volgendeFloat()
-
Lees een dubbel -
volgendeDouble()
-
Lees een boolean -
volgendeBoolean()
-
Lees een volledige regel -
volgendeLijn()
-
Lees een woord -
De volgende()
-
-
Hier is een voorbeeld van een programma dat verschillende methoden van de Scanner-klasse gebruikt om verschillende soorten invoer te krijgen:
java.util. Scanner importeren; public class ScannerExample {public static void main (String args) { // Start een nieuwe Scanner Scanner userInputScanner = new Scanner (System.in); // Testen nextLine(); System.out.println("\nWat is uw naam? "); Stringnaam = userInputScanner.nextLine(); // Testen nextInt(); System.out.print("Hoeveel katten heb je? "); int numberOfCats = userInputScanner.nextInt(); // Testen nextDouble(); System.out.print("Hoeveel geld zit er in uw portemonnee? $"); dubbel moneyInWallet = userInputScanner.nextDouble(); System.out.println("\nHallo " + naam + "! Je hebt " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " en $" + moneyInWallet + " in je portemonnee.\n"); } }
Methode 2 van 2: Uitzonderingen afhandelen
Stap 1. Behandel invoeruitzonderingen
Een
InputMismatchUitzondering
wordt gegenereerd wanneer de gebruiker gegevens invoert die niet overeenkomen met het gevraagde type. Als de gebruiker bijvoorbeeld een String invoert wanneer er om een int wordt gevraagd, zal het programma een
InputMismatchUitzondering
en uitstappen. Er zijn verschillende manieren om met deze uitzondering om te gaan en dit probleem op te lossen, zodat uw programma onfeilbaar is.
Stap 2. Gebruik een try-catch-blok om de af te handelen
InputMismatchUitzondering
.
import java.util. InputMismatchException; java.util. Scanner importeren; public class ScannerExample {public static void main (String args) { // Start een nieuwe Scanner Scanner userInputScanner = new Scanner (System.in); // Testen nextLine(); System.out.print("\nWat is uw naam? "); Stringnaam = userInputScanner.nextLine(); // Testen nextInt(); booleaanse validInput = false; int numberOfCats = 0; while (!validInput) { System.out.print("Hoeveel katten heb je? "); probeer { numberOfCats = userInputScanner.nextInt(); validInput = waar; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } // NextDouble(); validInput = onwaar; dubbel geldInWallet = 0.0; while (!validInput) { System.out.print("Hoeveel geld zit er in uw portemonnee? $"); probeer { moneyInWallet = userInputScanner.nextDouble(); userInputScanner.nextLine(); validInput = waar; } catch (InputMismatchException e) { validInput = false; userInputScanner.nextLine(); } } System.out.println("\nHallo " + naam + "! Je hebt " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " en $" + moneyInWallet + " in je portemonnee.\ N"); } }
Merk op dat we moeten importeren
java.util. InputMismatchException
om de te gebruiken
InputMismatchUitzondering
Toevoegen
userInputScanner.nextLine();
Stap 3. U kunt ook de invoer van de gebruiker onfeilbaar maken door alleen de volgende regels van de scanner op te nemen
Op deze manier kunnen we ervoor zorgen dat alles wat de Scanner retourneert een String-object is en geen uitzonderingen maakt. Om de tekenreeksen vervolgens om te zetten in gehele getallen of verdubbelingen, kunnen we de Integer- en Double-wrapperklassen gebruiken.
java.util. Scanner importeren; public class ScannerExample {public static void main (String args) { // Start een nieuwe Scanner Scanner userInputScanner = new Scanner (System.in); // Testen nextLine(); System.out.print("\nWat is uw naam? "); Stringnaam = userInputScanner.nextLine(); // Testen nextInt(); booleaanse validInput = false; int numberOfCats = 0; while (!validInput) { System.out.print("Hoeveel katten heb je? "); Tekenreeksinvoer = userInputScanner.nextLine(); probeer { numberOfCats = Integer.parseInt (invoer); validInput = waar; } catch (NumberFormatException e) { validInput = false; } } // NextDouble(); validInput = onwaar; dubbel geldInWallet = 0.0; while (!validInput) { System.out.print("Hoeveel geld zit er in uw portemonnee? $"); Tekenreeksinvoer = userInputScanner.nextLine(); probeer { moneyInWallet = Double.parseDouble (invoer); validInput = waar; } catch (NumberFormatException e) { validInput = false; } } System.out.println("\nHallo " + naam + "! Je hebt " + numberOfCats + (numberOfCats > 1 ? " cats": "cat") + " en $" + moneyInWallet + " in je portemonnee.\ N"); } }
Merk op dat we hier de. niet hoefden te importeren
NummerFormaatUitzondering
We hoefden de buffer ook niet te wissen met
userInputScanner.nextLine();
Tips
- Zie de Scanner API voor meer informatie over het gebruik van de Scanner-klasse.
- Gebruik altijd.next() in plaats van.nextLine() om het volgende woord te lezen, aangezien.nextLine() fouten kan bevatten.