Innholdsfortegnelse:
Video: Slik får du tilgang til gratis bilder 2025
Til Java 1. 5 var det ikke lett å få tekstinngang fra brukeren i et konsollbasert Java-program. Men med Java 1. 5 ble en ny klasse - kalt
Skanner
- introdusert for å forenkle oppgaven med å få innspill fra brukeren. Her bruker du klassen
Skanner
for å få enkle inngangsverdier fra brukeren. Teknikkene som jeg presenterer her, brukes i mange av programmene som vises i resten av denne boken.
Hvis du bruker en eldre versjon av Java, bør du fortsatt lese dette, fordi mange programmer bruker klassen
Skanner
.
Det enkle programmet nedenfor bruker klassen
Skanner
for å lese en heltallverdi fra brukeren og viser deretter verdien tilbake til konsollen for å verifisere at programmet mottok verdien som er oppgitt av brukeren. Her er et eksempel på konsollvinduet for dette programmet:
Skriv inn et heltall: 5
Du skrev inn 5.
Programmet begynner med å vise meldingen
Skriv inn et heltall:
på første linje. Så venter det på at du skriver inn et nummer. Når du skriver inn et nummer (for eksempel 5) og trykker Enter-tasten, vises bekreftelsesmeldingen (
Du skrev 5
.) På den andre linjen.
importer java. util. Scanner; @@ RA1
offentlig klasse ScannerApp
{
statisk skanner sc = ny skanner (System. In); @@ ra6
statisk statisk tomrom (String [] args)
{
System. ute. skriv ut ("Skriv inn et heltall:"); @@ ra10
int x = sc. nextInt (); @@ ra11
System. ute. println ("Du skrev inn" + x + "."); @@ ra12
}
}
Importere skannerklassen i Java
Før du kan bruke klassen
Skanner
i et program, må du importere det. For å gjøre dette, kodes du en
import
setning i begynnelsen av programmet, før klassedeklarasjonen:
importer java. util. Scanner;
Merk at
java
og
util
ikke er aktivert, men
Skanner
er.
Hvis du bruker andre klasser i
java. util
-pakken, kan du importere hele pakken ved å kode
import
uttalelsen slik:
import java. util. *;
Deklarere og opprette et Scanner-objekt i Java
Før du kan bruke klassen
Skanner
for å lese innspill fra konsollen, må du deklarere en
Skanner
-variabel og opprette en forekomst av klassen
Skanner
. Du vil kanskje lage
Skanneren
-variabelen som en klassevariabel og opprette
Skanneren
-objektet i klassevariabelinitiatoren, som vist i linje 6 i programmet ovenfor:
statisk skanner sc = ny skanner (system. in);
På den måten kan du bruke variabelen
sc
i hvilken som helst metode i klassen.
For å lage en
Skanner
-objekt, bruker du
nytt
søkeordet etterfulgt av et anrop til
Skanner
klassekonstruksjonen. Merk at klassen
Skanner
krever en parameter som indikerer inngangsstrømmen som inngangen kommer fra. Du kan bruke
System. i
her for å angi standard tastaturkonsollinngang.
Få inntasting
For å lese en inngangsverdi fra brukeren, kan du bruke en av metodene i klassen
Skanner
som er oppført nedenfor. Som du kan se, har den primitive datatypen en egen metode.
Metode | Forklaring |
Boolean nextBoolean ()
|
Leser en
boolean
verdi fra brukeren. |
byte nextByte ()
|
Leser en
byte
verdi fra brukeren. |
double nextDouble ()
|
Leser en
dobbel
verdi fra brukeren. |
float nextFloat ()
|
Leser en
float
verdi fra brukeren. |
int nextInt ()
|
Leser en
int
verdi fra brukeren. |
String nextLine ()
|
Leser en
Streng
verdi fra brukeren. |
lenge nextLong ()
|
Leser en
lang
verdi fra brukeren. |
kort nextShort ()
|
Leser en
kort
verdi fra brukeren. |
Merk i den første kolonnen i tabellen at hver metodeoppføring begynner med typen av verdien som returneres av metoden. Metoden
nextInt
gir for eksempel en
int
-verdi. Vær også oppmerksom på at hver av metodene slutter med et tomt paranteser. Det betyr at disse metodene ikke krever parametere. Hvis en metode krever parametere, er parametrene oppført innenfor disse parentesene.
Fordi disse metodene leser en verdi fra brukeren og returnerer verdien, bruker du oftest dem i setninger som tilordner verdien til en variabel. Linje 11, for eksempel, leser en
int
og tilordner den til en variabel som heter
x
.
Når metoden
nextInt
utføres, venter programmet at brukeren skal skrive inn en verdi i konsollvinduet. For å la brukeren vite hvilken type innspill programmet forventer, bør du vanligvis ringe
Systemet. ute. skriv ut
metoden før du kaller en
Skanner
metode for å få innspill. Linje 10 ringer
System. ute. skriv ut
for å vise meldingen
Skriv inn et heltall:
på konsollen. På den måten vet brukeren at programmet venter på input.
Hvis brukeren skriver inn en verdi som ikke kan konverteres til riktig type, krasjer programmet, noe som betyr at det slutter abrupt. Når programmet krasjer, viser det en kryptisk feilmelding som angir hva som forårsaket feilen. Hvis du skriver inn
tre
i stedet for et faktisk tall, ser konsollvinduet seg slik ut:
Skriv inn et heltall: tre Unntak i tråd "main" java. util. InputMismatchException
på java. util. Scanner. throwFor (Scanner. java: 819)
på java. util. Scanner. neste (Scanner. java: 1431)
på java. util. Scanner. nextInt (Scanner. java: 2040)
på java. util. Scanner. nextInt (Scanner. java: 2000)
på ScannerApp.main (ScannerApp. java: 11)
Denne meldingen indikerer at et unntak kalt
InputMismatchException
har oppstått, noe som betyr at programmet ventet å se et heltall, men fikk noe annet i stedet. Hvis du ikke vet hvordan du skal sørge for unntak som disse, slik at programmet kan vise en vennligere melding og gi brukeren et annet skudd ved å skrive inn en korrekt verdi, må du passe på at hvis brukeren skriver feil data, programmet ditt krasjer ungracefully.
Du kan forhindre at
nextInt
og lignende metoder krasjer med feil inngangsdata ved først å bruke en av metodene som er oppført her for å teste neste inngang for å sikre at den er gyldig.
Metode | Forklaring |
Boolean hasNextBoolean ()
|
Returnerer
true
hvis den neste verdien som er oppgitt av brukeren, er en gyldig < boolean
verdi.
boolean hasNextByte () |
Returnerer
|
true
hvis den neste verdien oppgitt av brukeren er en gyldig
byte
verdi.
boolean harNextDouble () |
Returnerer
|
true
hvis den neste verdien som er oppgitt av brukeren, er en gyldig
dobbel
verdi.
boolean hasNextFloat () |
Returnerer
|
true
hvis den neste verdien som er oppgitt av brukeren, er en gyldig
float
verdi.
boolean harNextInt () |
Returnerer
|
true
hvis den neste verdien oppgitt av brukeren er en gyldig
int
verdi.
boolean hasNextLong () |
Returnerer
|
true
hvis den neste verdien som er oppgitt av brukeren, er en gyldig
lang
verdi.
boolean hasNextShort () |
Returnerer
|
true
hvis den neste verdien oppgitt av brukeren er en gyldig
kort
verdi.
![]() |