Inhoudsopgave:
Video: Software Testing Tutorials for Beginners 2024
Tot Java 1. 5 was het niet eenvoudig om tekstinvoer te krijgen van de gebruiker in een console-gebaseerd Java-programma. Maar met Java 1. 5 werd een nieuwe klasse - genaamd
Scanner
- geïntroduceerd om de invoer van de gebruiker te vereenvoudigen. Hier gebruikt u de klasse
Scanner
om eenvoudige invoerwaarden van de gebruiker te krijgen. De technieken die ik hier presenteer, worden in veel van de programma's gebruikt die in de rest van dit boek worden getoond.
Als u een oudere versie van Java gebruikt, moet u dit nog steeds lezen, omdat veel programma's de
Scanner
-klasse gebruiken.
Het eenvoudige programma hieronder gebruikt de klasse
Scanner
om een geheel getal van de gebruiker te lezen en geeft vervolgens de waarde terug naar de console om te controleren of het programma de door de gebruiker ingevoerde waarde heeft ontvangen. Hier is een voorbeeld van het consolevenster voor dit programma:
Voer een geheel getal in: 5
U hebt 5 ingevoerd.
Het programma begint met het weergeven van het bericht
Voer een geheel getal:
in op de eerste regel. Daarna wacht het tot u een cijfer invoert. Wanneer u een nummer typt (zoals 5) en op de toets Enter drukt, wordt op de tweede regel het bevestigingsbericht weergegeven (
U hebt 5
ingevoerd.).
java importeren. util. Scanner; @@ RA1
public class ScannerApp
{
statische Scanner sc = nieuwe scanner (systeem. In); @@ ra6
public static void main (String [] args)
{
Systeem. uit. print ("Voer een geheel getal in:"); @@ ra10
int x = sc. nextInt (); @@ RA11
Systeem. uit. println ("U hebt" + x + "ingevoerd."); @@ ra12
}
}
De Scanklasse importeren in Java
Voordat u de klasse
Scanner
in een programma kunt gebruiken, moet u deze importeren. Om dat te doen, codeert u een
import
-instructie aan het begin van het programma, vóór de klassendeclaratie:
java importeren. util. Scanner;
Let op:
java
en
gebruik
hebben geen hoofdletter, maar
Scanner
is dat wel.
Als u andere klassen gebruikt in de
Java. util
-pakket, kunt u het hele pakket importeren door de
import
-instructie als volgt te coderen:
java importeren. util. *;
Een Scanner-object declareren en maken in Java
Voordat u de klasse
Scanner
kunt gebruiken om invoer van de console te lezen, moet u een
Scanner
-variabele declareren en een exemplaar maken van de
Scanner
-klasse. U kunt de
Scanner
-variabele als een klassenvariabele maken en het
Scanner
-object maken in de klassenvariabele-initialisatieprogramma, zoals weergegeven in regel 6 van het bovenstaande programma:
statische Scanner sc = nieuwe scanner (systeem. in);
Op die manier kunt u de variabele
sc
gebruiken voor elke methode in de klas.
Als u een
Scanner
-object wilt maken, gebruikt u het sleutelwoord
nieuw
gevolgd door een aanroep van de constructor
Scanner
. Merk op dat de klasse
Scanner
een parameter vereist die de invoerstroom aangeeft waarvan de invoer afkomstig is. U kunt
Systeem gebruiken. in
hier om standaard toetsenbordconsole-invoer te specificeren.
Input verkrijgen
Om een invoerwaarde van de gebruiker te lezen, kunt u een van de methoden van de
Scanner
-klasse gebruiken die hieronder worden vermeld. Zoals u kunt zien, heeft het primitieve gegevenstype een afzonderlijke methode.
Methode | Verklaring |
boolean nextBoolean ()
|
Leest een
boolean
-waarde van de gebruiker. |
byte nextByte ()
|
Leest een
byte
waarde van de gebruiker. |
double nextDouble ()
|
Leest een
dubbele
waarde van de gebruiker. |
float nextFloat ()
|
Leest een
float
-waarde van de gebruiker. |
int nextInt ()
|
Leest een
int
-waarde van de gebruiker. |
String nextLine ()
|
Leest een
String
-waarde van de gebruiker. |
long nextLong ()
|
Leest een
lange
waarde van de gebruiker. |
short nextShort ()
|
Leest een
korte
waarde van de gebruiker. |
Let op in de eerste kolom van de tabel dat elke lijst met methoden begint met het type waarde dat door de methode wordt geretourneerd. De
nextInt
-methode retourneert bijvoorbeeld een
int
-waarde. Merk ook op dat elk van de methoden eindigt met een lege reeks haakjes. Dat betekent dat deze methoden geen parameters vereisen. Als een methode parameters vereist, worden de parameters tussen deze haakjes weergegeven.
Omdat deze methoden een waarde van de gebruiker lezen en de waarde retourneren, gebruikt u ze meestal in instructies waarin de waarde aan een variabele wordt toegewezen. Regel 11 leest bijvoorbeeld een
int
en wijst deze toe aan een variabele met de naam
x
.
Wanneer de methode
nextInt
wordt uitgevoerd, wacht het programma totdat de gebruiker een waarde in het consolevenster heeft ingevoerd. Om de gebruiker te laten weten wat voor soort invoer het programma verwacht, moet u meestal het
-systeem bellen. uit. print
-methode voordat u een
Scanner
-methode belt om invoer te krijgen. Lijn 10-oproepen
Systeem. uit. print
om het bericht weer te geven
Voer een geheel getal:
in op de console. Op die manier weet de gebruiker dat het programma op invoer wacht.
Als de gebruiker een waarde invoert die niet naar het juiste type kan worden geconverteerd, loopt het programma vast, wat betekent dat het abrupt wordt beëindigd. Wanneer het programma crasht, wordt een cryptisch foutbericht weergegeven dat aangeeft waardoor de fout is veroorzaakt. Als u bijvoorbeeld
drie
in plaats van een werkelijk getal invoert, ziet het consolevenster er ongeveer zo uit:
Voer een geheel getal in: drie Uitzondering in java "main" java. util. InputMismatchException
in java. util. Scanner. throwFor (Scanner. java: 819)
in java. util. Scanner. volgende (Scanner. java: 1431)
in java. util. Scanner. nextInt (Scanner. java: 2040)
in java. util. Scanner. nextInt (Scanner. java: 2000)
bij ScannerApp.main (ScannerApp. java: 11)
Dit bericht geeft aan dat een exception genaamd
InputMismatchException
heeft plaatsgevonden, wat betekent dat het programma een integer verwachtte maar in plaats daarvan iets anders kreeg. Als u niet weet hoe u uitzonderingen als deze moet opgeven, zodat het programma een vriendelijker bericht kan weergeven en de gebruiker nog een kans kan geven om een juiste waarde in te voeren, moet u het feit accepteren dat als de gebruiker onjuiste gegevens invoert, je programma crasht ongracieus.
U kunt voorkomen dat de
nextInt
en soortgelijke methoden crashen met onjuiste invoergegevens door eerst een van de hier vermelde methoden te gebruiken om de volgende invoer te testen om te controleren of deze geldig is.
Methode | Toelichting |
boolean hasNextBoolean ()
|
Geeft als resultaat
waar
als de volgende waarde die door de gebruiker is ingevoerd een geldige < boolean
waarde.
boolean hasNextByte () |
Retourneert
|
true
als de volgende door de gebruiker ingevoerde waarde een geldige
byte
is.
boolean hasNextDouble () |
Retourneert
|
true
als de volgende door de gebruiker ingevoerde waarde een geldige
dubbele
-waarde is.
boolean hasNextFloat () |
Retourneert
|
true
als de volgende waarde die door de gebruiker is ingevoerd een geldige
zwevend
-waarde is.
boolean hasNextInt () |
Retourneert
|
true
als de volgende door de gebruiker ingevoerde waarde een geldige
int
waarde is.
boolean hasNextLong () |
Retourneert
|
true
als de volgende waarde die door de gebruiker is ingevoerd een geldige
lange
waarde is.
boolean hasNextShort () |
Retourneert
|
true
als de volgende door de gebruiker ingevoerde waarde een geldige
korte
waarde is.
|