java scanner class tutorial with examples
I denna handledning kommer vi att diskutera hur man importerar och använder Java-skannerklassen tillsammans med dess olika metoder, skanner-API och exempel:
Vi har redan sett de vanliga Input-Output-metoderna som används av Java för att läsa / skriva data till standard I / O-enheter.
Java tillhandahåller ännu en mekanism för att läsa användarinmatning. Det här är Scanner-klassen. Även om det inte är mycket effektivt, är Scanner-klassen det enklaste och mest föredragna sättet att läsa inmatning i Java-program.
=> Kontrollera ALLA Java-handledning här.
Vad du kommer att lära dig:
Java-skannerklass: En djupgående blick
Skannerklass används mest för att skanna ingången och läsa ingången för primitiva (inbyggda) datatyper som int, decimal, dubbel, etc. Skannerklassen returnerar i grunden den tokeniserade ingången baserat på ett avgränsningsmönster. Således, i allmänhet, om du vill läsa typen dt, kan du använda funktionen nextdt () för att läsa ingången.
En skannerklass implementerar gränssnitt för Iterator (string), Closeable och AutoCloseable.
Låt oss utforska detaljerna i den här skannerklassen nu.
Importera skanner
Skannerklassen tillhör paketet “java.util”. Därför måste du importera paketet enligt följande för att använda skannerklassen i ditt program.
importera java.util. *
ELLER
importera java.util.Scanner;
Något av ovanstående uttalanden importerar skannerklassen och dess funktionalitet i ditt program.
Java-skannerklass
När skannerklassen har importerats till Java-programmet kan du använda den för att läsa inmatningen av olika datatyper. Beroende på om du vill läsa inmatningen från standardinmatningen eller filen eller kanalen kan du skicka lämpligt fördefinierat objekt till skannerobjektet.
Nedan följer ett grundläggande exempel på användning av skannerklass.
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
Produktion:
I ovanstående program har vi tillhandahållit 'System.in' (standardinmatning) som objekt när vi skapade ett Scanner-klassobjekt. Sedan läser vi en strängingång från standardingången.
Skanner-API (konstruktörer och metoder)
I det här avsnittet kommer vi att utforska API för skannerklass i detalj. Skannerklass innehåller olika överbelastade konstruktörer för att tillgodose olika inmatningsmetoder som System.in, filinmatning, sökväg etc.
Följande tabell ger prototypen och beskrivningen för var och en av skannerklasskonstruktörerna.
hur man implementerar en kö i java
Låt bli | Prototyp | Beskrivning |
---|---|---|
7 | Skanner (sökvägskälla, sträng charsetName) | Den här konstruktören konstruerar en ny skanner som skannar den angivna filen och producerar värdena |
1 | Scanner (InputStream-källa) | Den här konstruktören konstruerar en ny skanner som skannar den nya InputStream, källa och producerar värdena |
två | Scanner (InputStream-källa, String charsetName) | Den här konstruktören konstruerar en ny skanner som skannar den nya InputStream, källa och producerar värdena |
3 | Skanner (filkälla) | Den här konstruktören konstruerar en ny skanner som skannar den angivna filen och producerar värdena |
4 | Skanner (filkälla, sträng charsetName) | Den här konstruktören konstruerar en ny skanner som skannar den angivna filen och producerar värdena |
5 | Skanner (strängkälla) | Den här konstruktören konstruerar en ny skanner som skannar den angivna strängen och producerar värdena |
6 | Skanner (sökvägskälla) | Den här konstruktören konstruerar en ny skanner som skannar den angivna filen och producerar värdena |
8 | Skanner (läsbar källa) | Den här konstruktören konstruerar en ny skanner som skannar den angivna källan och producerar värdena |
9 | Skanner (ReadableByteChannel-källa) | Den här konstruktören konstruerar en ny skanner som skannar den angivna kanalen och producerar värdena |
10 | Skanner (ReadableByteChannel-källa, sträng charsetName) | Den här konstruktören konstruerar en ny skanner som skannar den angivna kanalen och producerar värdena |
Precis som konstruktörer ger Scanner-klassen också många metoder som används för att skanna och läsa ingången. Det ger olika booleska metoder som låter dig kontrollera om nästa token i ingången är en token av en viss datatyp.
Observera att för varje konstruktör kan du antingen bara tillhandahålla ett argument med det fördefinierade ingångsobjektet eller två argument som består av fördefinierat ingångsobjekt och teckenuppsättning. I fallet med ett argument antas standardteckenuppsättningen.
Det finns också metoder för att hämta tokens för varje datatyp.
Andra metoder inkluderar metoder för att ställa in språk, radix, matchningsmönster, stänga skanner etc.
Följande tabell ger prototypen och beskrivningen av var och en av de grundläggande skannermetoderna.
Låt bli | Prototyp | Beskrivning |
---|---|---|
7 | Booleska hasNextFloat () | Kontrollerar om nästa token i Scanner-ingången är av flottörtyp |
1 | Boolean hasNext () | Returnerar sant om det finns en annan token i skannerns ingång |
två | Boolean hasNextBigDecimal () | Kontrollerar om nästa token i skannerinmatningen är av bigDecimal-typ. |
3 | Boolean hasNextBigInteger () | Kontrollerar om nästa token i skannerinmatningen är av storInteger-typ |
4 | Boolean hasNextBoolean () | Kontrollerar om nästa token i skannerinmatningen är av boolsk typ |
5 | Boolean hasNextByte () | Kontrollerar om nästa token i skannerinmatningen är av typen Byte |
6 | Boolean hasNextDouble () | Kontrollerar om nästa token i skannerinmatningen är av dubbel typ |
8 | Boolean hasNextInt () | Kontrollerar om nästa token i skannerinmatningen är av heltalstyp |
9 | Boolean hasNextLine () | Kontrollerar om nästa token i skannerinmatningen är en annan rad |
10 | Boolean hasNextLong () | Kontrollerar om nästa token i skannerinmatningen är av lång typ |
elva | Boolean hasNextShort () | Kontrollerar om nästa token i skannerinmatningen är av kort typ |
12 | Sträng nästa () | Skannar ingången för nästa kompletta token |
13 | BigDecimal nästaBigDecimal () | Skannar ingången för nästa BigDecimal-token |
14 | BigInteger nextBigInteger () | Skannar ingången för nästa BigInteger-token |
femton | Boolean nästaBoolean () | Skannar ingången för nästa booleska token |
16 | Byte nextByte () | Skannar ingången för nästa byte-token |
17 | Dubbel nästaDubbel () | Skannar ingången för nästa dubbel token |
18 | Float nextFloat () | Skannar ingången för nästa float-token |
19 | Int nästaInt () | Skannar ingången för nästa heltalstoken |
tjugo | Sträng nästa linje () | Hämta inmatningssträngen från skannerobjektet |
tjugoett | Lång nästaLång () | Skannar ingången för nästa långa heltalstoken |
22 | Kort nästaShort () | Skannar ingången för nästa korta heltalstoken |
2. 3 | Återställ skanner () | Återställ den för närvarande använda skannern |
24 | Hoppa över skanner () | Ignorera avgränsare och hoppa över ingången som matchar det angivna mönstret |
25 | Scanner useDelimiter () | Ställ in avgränsningsmönstret till det angivna mönstret |
26 | Scanner useLocale () | Ställ in skannerns språkobjekt med den angivna platsen |
27 | Scanner useRadix () | Ställ in den angivna radixen som standardradix för Scanner |
28 | Int radix () | Returnerar standardradix för den aktuella skannern |
29 | ogiltig ta bort () | Kan användas när Iterator inte stöder borttagning |
30 | Ström tokens () | Returnerar en ström avgränsade separerade tokens från den aktuella skannern |
31 | String toString () | Retursträngrepresentationen för den givna skannern som för närvarande används |
32 | IOException ioException () | Returnerar IOException som senast kastades av läsbart för skannerobjekt |
33 | Stream findALL () | Returnerar strömmen av matchresultat som matchar det angivna mönstret |
3. 4 | Sträng findInLine () | Hitta nästa förekomst av mönstret från den givna strängen; ignorerar avgränsare |
35 | String findWithinHorizon () | Hitta nästa förekomst av mönstret från den givna strängen; ignorerar avgränsare |
36 | Mönsteravgränsare () | Returnerar det mönster som används av den aktuella skannern |
37 | Gäller ej () | Stänger skannern |
38 | MatchResult-matchning () | Returnerar matchningsresultatet för den senaste skanningsoperationen |
39 | Lokal lokal () | Återlämna språk för den aktuella skannern |
Kolla upp här för att lära dig mer om skannermetoderna.
Hur använder jag skannern i Java?
Nu när du har sett de olika konstruktörerna och metoderna som tillhandahålls av Scanner-klassen, låt oss nu implementera några av exemplen för att visa hur du använder Scanner-klassen i Java.
Följande implementering visar användningen av skannerklass för att läsa inmatning från System.in dvs. standardingången.
Här använder vi ett fördefinierat System.in-objekt för att skapa ett Scanner-objekt. Användaren uppmanas sedan att ange namn, klass och procent. Alla dessa detaljer läses med hjälp av klassobjektet Skanner.
Observera metoderna som används av skannerobjekt för att läsa olika typer av inmatningar. Eftersom namnet är en sträng använder Scanner-objektet nästa () -metod. För klassinmatning använder den nextInt () medan procent använder nextFloat ().
På detta sätt kan du enkelt separera ingången medan du läser.
Programmets utgång visar den ingång som matas in och informationen som visas.
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
Produktion:
Skannersträng
Som redan nämnts kan du använda olika fördefinierade objekt när du skapar ett skannerobjekt. Det betyder att du kan antingen läsa ingången från standardingång, filer och olika I / O-kanaler eller från strängar också.
När en strängingång används kan du också använda reguljära uttryck inuti den.
Följande exempel visar programmet där Scanner använder en sträng som inmatning. Denna ingång skannas sedan och tokens separeras genom att läsa varje token.
De avläsna tokens visas sedan i utdata.
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
Produktion:
Stäng skannern
Java Scanner-klass använder metoden “Stäng ()” för att stänga skannern. Skannerklassen implementerar också internt ett stängbart gränssnitt och om skannern inte redan är stängd påkallar det underliggande läsbara gränssnittet dess nära metod.
Det är en bra programmeringsmetod att stänga skannern uttryckligen med Close () -metoden när du är klar med den.
Notera: Om skannerobjektet stängs och ett försök görs att söka, resulterar det i 'IllegalStateException'.
Vanliga frågor
F # 1) Vad är skannerklassen i Java?
Svar: Scanner-klassen är en del av Java-paketet 'java.util' och används för att läsa inmatning av olika primitiva datatyper som int, float, strängar etc.
hur man gör en enkelsidesapplikation med angularjs
F # 2) Vad är skillnaden mellan nästa () och nextLine () -metoder i skannerklassen?
Svar: Metoden nästa () läser inmatning till mellanslag och placerar markören på samma rad efter läsning av ingång. Metoden nextLine () läser dock hela inmatningsraden till slutet av raden inklusive mellanslag.
F # 3) Vad är hasNext () i Java?
Svar: Metoden hasNext () är en av Java Scanner-metoderna. Den här metoden returnerar true om skannern har en annan token i ingången.
F # 4) Behöver du stänga en skannerkurs?
Svar: Det är bättre men inte obligatoriskt att stänga skannerklassen som om den inte är stängd, det underliggande läsbara gränssnittet för skannerklassen gör jobbet åt dig. Kompilatorn kan dock blinka någon varning om den inte är stängd.
Så som en bra programmeringspraxis, stäng alltid skannern.
F # 5) Vad är syftet med 'system.in' i Scanner-klassen?
Svar: Genom att använda “System.in” i skannerklassen tillåter du skannern att läsa tangentbordet som är anslutet till standardindata.
Slutsats
I den här handledningen har vi sett skannerklassen och alla dess detaljer inklusive API och implementering. Skannerklass används för att läsa indata från olika medier som standardinmatning, filer, IO-kanaler, strängar med / utan reguljära uttryck, etc.
Även om Scanner inte är ett mycket effektivt sätt att läsa in input är det ett av de enklaste sätten. Skannern låter dig läsa inmatningen av olika primitiva datatyper som int, float, strängar etc. När du använder strängar som inmatningsobjekt för skannerklass kan du också använda reguljära uttryck med den.
Scannerklassen låter dig också läsa inmatningar genom att matcha något mönster eller avgränsare.
Avslutningsvis är användning av skannerklass i Java det enklaste och mest föredragna sättet att läsa in.
=> Kolla in den perfekta Java-träningsguiden här.
Rekommenderad läsning
- Vad är Java Vector | Java Vector Class Tutorial med exempel
- Java Array Class Tutorial - java.util.Arrays Class med exempel
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning
- Java-gränssnitt och abstrakt klasshandledning med exempel
- Java Reflection Tutorial med exempel
- Jagged Array In Java - Handledning med exempel
- Java Array Length Tutorial With Code Exempel
- Java String Tutorial | Java-strängmetoder med exempel