Slik bruker du skanner i Java

How Use Scanner Java



Skanneren i Java er en klasse i java.util -pakken. Denne klassen tar sikte på å lese input fra en streng, tastaturet, filen eller nettverkskontakten. Denne artikkelen konsentrerer seg bare om å lese inngang fra tastaturet og vise resultatet i terminalvinduet. Lignende ideer kan brukes til å lese input fra filen eller nettverkskanalen. Skanneren skriver ikke ut til terminalvinduet. For å skrive ut til terminalen, bruk System.out -objektet. Det er enkelt å bruke dette objektet til å skrive ut til terminalen, som vist nedenfor.

For å bruke skannerklassen må den importeres først. Etter det må et objekt instantieres fra det. Etter at du har brukt skannerobjektet, må det lukkes. Inndatastrømobjektet som representerer tastaturet er System.in. Skanneren har mange metoder. Bare de vanligste vil bli forklart i denne artikkelen.







Artikkelinnhold



Enkel bruk av skannerklassen

Følgende kode ber brukeren om å skrive inn en setning, og deretter viser den setningen:



import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
SkannerskanningObj= nySkanner( System .i);
System .ute.println('Skriv inn en setning og trykk Enter:');

String setning=scanObj.nextLine();
System .ute.println(setning);

scanObj.Lukk();
}
}

Den første linjen importerer skannerklassen. I hovedfunksjonen oppretter den første linjen et skannerobjekt som bruker System.in -objektet for tastaturet. Så snart skannerobjektet er opprettet, begynner det å vente på input. Den neste linjen skriver ut en setning og ber brukeren skrive inn en setning. Linjen som følger i koden bruker metoden nextLine () for skannerobjektet for å lese brukerens setning etter at han trykker Enter. Linjen etter, i koden, skriver ut setningen på nytt i terminalvinduet. Den siste linjen lukker skannerobjektet.





Spytter inngangslinjen i verdier

Følgende kode deler inndatalinjen i ord (tokens), og bruker mellomrom som skilletegn:

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
SkannerskanningObj= nySkanner( System .i);
System .ute.println('Skriv inn en linje med symboler, og trykk Enter:');

samtidig som(scanObj.harNeste()){
System .ute.println(scanObj.neste());
}

scanObj.Lukk();
}
}

hasNext () og neste () er to andre metoder for skannerobjektet. Når skannerobjektet leser en linje, beholder den den. next () får tilgang til neste token (word). hasNext () returnerer true hvis det er et annet token som ikke er åpnet ennå.



Dessverre forventes det fortsatt at brukeren skriver inn input for splitting og visning på nytt med denne koden. For å avslutte alt dette, trykk Ctrl+z, og du bør være tilbake ved ledeteksten.

I koden ovenfor skiller skilletegn mellom tokener i rommet. En annen karakter kan brukes. Følgende kode bruker kommaet. Ikke glem å trykke Ctrl+z for å avslutte løkken hvis du tester koden.

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
SkannerskanningObj= nySkanner( System .i);
System .ute.println('Skriv inn en linje med symboler, og trykk Enter:');

scanObj.useDelimiter(',');

samtidig som(scanObj.harNeste()){
System .ute.println(scanObj.neste());
}

scanObj.Lukk();
}
}

Hvis du testet koden, ville du ha lagt merke til at mellomrom i tokens har blitt inkludert som en del av tokens (output). Uttrykket, scanObj.useDelimiter (,); skrevet etter at inndatalinjen er lest; det er det som gjør komma, skilletegn.

Lese og validere primitive datatyper

nextBoolean () metode

I den følgende koden forventes det at brukeren skriver enten sant eller usant uten anførselstegn, og trykker deretter på Enter -tasten hvis brukeren skriver noe annet, for eksempel ja eller nei, en feilmelding vil bli vist.

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
System .ute.skrive ut('Er du over 24? ');
SkannerskanningObj= nySkanner( System .i);

boolskbl=scanObj.neste boolske();
hvis (bl== ekte) {
System .ute.println('Du er over 24');
}
ellers hvis (bl== falsk) {
System .ute.println('Du er under 24');
}

scanObj.Lukk();
}
}

Siden java vil utstede en feilmelding så lenge inngangen ikke er sann eller usann nøyaktig, har ellers hvis blitt brukt i stedet for annet.

Forskjellen mellom metodene, print og println, er at print forventer input på gjeldende linje, mens println forventer input på neste linje.

nextByte () -metode

Med ASCII -tegnsettet er et tegn en byte. Men med noen østlige tegnsett kan et tegn bestå av mer enn en byte. Uavhengig av tegnsettet, leser og validerer nextByte -metoden neste byte av inngangen. Følgende kode kan brukes til dette formålet:

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
System .ute.skrive ut('Skriv nummer<128, press Enter: ');
SkannerskanningObj= nySkanner( System .i);

bytebt=scanObj.nextByte();
System .ute.println(bt);

scanObj.Lukk();
}
}

Hvis et tall større enn 127 eller et alfabettegn er angitt for denne koden, vil det bli sendt ut en feilmelding.

nextInt () Metode

Det neste heltallstokenet som input kan også valideres og godtas. Følgende kode kan brukes:

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
System .ute.skrive ut('Skriv inn et helt tall:');
SkannerskanningObj= nySkanner( System .i);

intpå en=scanObj.nesteInt();
System .ute.println(på en);

scanObj.Lukk();
}
}

Ledende eller bakre mellomrom er fjernet. For denne koden, godtas alle heltallverdier, inkludert verdier større enn 127. Med disse nextXXX () -metodene blir det gitt en feilmelding når valideringen mislykkes.

nextBigInteger () Metode

Det virker som programvareingeniører aldri vil slutte å finne på nye ting. Et stort heltall er et heltall hvis verdi er mye større enn et heltall. Men med Java kan det leses på samme måte som heltallet. Følgende kode illustrerer dette:

import java.util.Scanner;
import java.math.BigInteger;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
System .ute.println('Skriv inn et heltall for stort heltall:');
SkannerskanningObj= nySkanner( System .i);

BigInteger på en=scanObj.nextBigInteger();
System .ute.println(på en);

scanObj.Lukk();
}
}

Legg merke til importerklæringen, import java.math.BigInteger ;. Vær også oppmerksom på at det store heltallstypen begynner med en stor B og ikke en liten b.

nextFloat () Metode

Det neste float -tokenet som input kan også valideres og godtas. Følgende kode kan brukes:

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
System .ute.skrive ut('Skriv inn en flottør:');
SkannerskanningObj= nySkanner( System .i);

flytepå en=scanObj.neste flyte();
System .ute.println(på en);

scanObj.Lukk();
}
}

Et eksempel på et flottørnummer er 23.456. Ledende eller bakre mellomrom er fjernet.

nesteDobbelt ()

Det neste doble token som input kan også valideres og godtas. Følgende kode kan brukes:

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
System .ute.skrive ut('Skriv inn en dobbel:');
SkannerskanningObj= nySkanner( System .i);

dobbeltpå en=scanObj.nesteDobbelt();
System .ute.println(på en);

scanObj.Lukk();
}
}

Et eksempel på et dobbelt tall er 23.456. Et dobbelt tall er forskjellig fra en flottør fordi den har mindre feilmargin. Ledende eller bakre mellomrom er fjernet.

nextLine () -metode

Metoden nextLine () er for en streng. Hvis strengen er inndatalinjen fra tastaturet etter at du har trykket Enter, kan den ha nylinjetegnet ' n'. Følgende kode kan brukes:

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
System .ute.println('Skriv inn en linje med\n: ');
SkannerskanningObj= nySkanner( System .i);

String s. s=scanObj.nextLine();
System .ute.println(s. s);

scanObj.Lukk();
}
}

Legg merke til at strengtypen begynner med store S og ikke små s.

NextLine (), hasNext () og next () metodene har blitt brukt tidligere, i denne artikkelen. Skanneren har andre metoder og andre primitive datametoder - se senere.

Tilordne inndata til en variabel

Inndata kan tilordnes en variabel, slik følgende kode viser:

import java.util.Scanner;

offentlig klasseKlassen{
offentlig statisk tomromhoved-( String []args) {
SkannerskanningObj= nySkanner( System .i);

System .ute.skrive ut('Skriv inn navn: ');
String Navn=scanObj.nextLine();

System .ute.skrive ut('Skriv inn alder:');
intalder=scanObj.nesteInt();

System .ute.skrive ut('Skriv inn lønn:');
dobbeltlønn=scanObj.nesteDobbelt();

System .ute.println('Navn: ' +Navn+ ', Alder:' +alder+ ', Lønn:' +lønn);

scanObj.Lukk();
}
}

Konklusjon

Skanneren i Java er en klasse i java.util -pakken. Denne klassen tar sikte på å lese input fra en streng, tastaturet, filen eller nettverkskontakten. Denne artikkelen har hovedsakelig konsentrert seg om å lese inngang fra tastaturet og vise resultatet i terminalvinduet. Lignende ideer kan brukes til å lese input fra strengen, filen eller nettverkskanalen.

For å lese hele linjen med tastaturinngang, bruk metoden nextLine (). Linjen som en streng kan deles inn i tokens ved hjelp av hasNext () og next () metodene, og while loop. Standard skilletegn for deling er mellomrommet, men programmereren kan velge en annen skilletegn. Ikke glem å gjøre Ctrl+z for å stoppe mensløkken, om nødvendig. Fjerne ledende og etterfølgende mellomrom kan gjøres ved hjelp av andre ordninger som ikke er behandlet i denne artikkelen. Validering av tokens kan også gjøres ved hjelp av andre ordninger som ikke er behandlet i denne artikkelen.

Primitive verdier kan leses ved hjelp av nextBoolean (), nextByte (), nextInt (), etc. Disse nextXXX () metodene utfører validering, og fjerner også ledende og etterfølgende mellomrom.

Java -skanneren har mange flere metoder. Den grunnleggende bruken av skanneren har imidlertid blitt forklart i denne artikkelen. Valget av et token gjøres faktisk ved hjelp av vanlige uttrykksteknikker. Bruken av vanlige uttrykksteknikker er diskusjon, en annen gang.