Java Scanner: Uitgebreide gids met praktische voorbeelden
Java Scanner onder de knie
Ontdek hoe je Java's Scanner-klasse gebruikt om tekst, getallen en complexe typen uit diverse bronnen te lezen, ondersteund duidelijke, real-world voorbeelden.
Inleiding
De Scanner-klasse in java.util laat je invoer vastleggen uit streams, bestanden, strings en de console. Hieronder lopen we de kerngebruikspatronen door.
Voorbeeld 1: Een volledige regel tekst lezen
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Voer je naam in: ");
String naam = input.nextLine();
System.out.println("Mijn naam is " + naam);
input.close();
}
}
Output
Voer je naam in: Kelvin Mijn naam is Kelvin
De regel Scanner input = new Scanner(System.in); bouwt een Scanner die naar toetsenbordinvoer luistert. De nextLine()-methode consumeert de hele regel tot een line break.
Scanner-klasse importeren
Voordat je Scanner kunt gebruiken, importeer het:
import java.util.Scanner;
Scanner-objecten aanmaken
Afhankelijk van je invoerbron, instantieer een Scanner als volgt:
// Van een input stream (bijv. System.in)
Scanner sc1 = new Scanner(InputStream input);
// Van een bestand
Scanner sc2 = new Scanner(File bestand);
// Van een string
Scanner sc3 = new Scanner(String str);
Kern Scanner-methoden voor invoer
De Scanner-klasse biedt diverse methoden om verschillende datatypen te lezen. Hieronder een snelle referentie:
| Methode | Beschrijving |
|---|---|
nextInt() | Lees een int |
nextFloat() | Lees een float |
nextBoolean() | Lees een boolean |
nextLine() | Lees een volledige regel tekst |
next() | Lees een enkel woord (tot whitespace) |
nextByte() | Lees een byte |
nextDouble() | Lees een double |
nextShort() | Lees een short |
nextLong() | Lees een long |
Voorbeeld 2: nextInt() gebruiken
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Voer een integer in: ");
int data1 = input.nextInt();
System.out.println("Met nextInt(): " + data1);
input.close();
}
}
Output
Voer een integer in: 22 Met nextInt(): 22
Voorbeeld 3: nextDouble() gebruiken
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Voer Double-waarde in: ");
double waarde = input.nextDouble();
System.out.println("Met nextDouble(): " + waarde);
input.close();
}
}
Output
Voer Double-waarde in: 33.33 Met nextDouble(): 33.33
Voorbeeld 4: next() gebruiken
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Voer je naam in: ");
String waarde = input.next();
System.out.println("Met next(): " + waarde);
input.close();
}
}
Output
Voer je naam in: Jonny Walker Met next(): Jonny
Let op dat next() stopt bij de eerste whitespace, dus alleen de voornaam wordt gevangen.
Voorbeeld 5: nextLine() gebruiken
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Voer je naam in: ");
String waarde = input.nextLine();
System.out.println("Met nextLine(): " + waarde);
input.close();
}
}
Output
Voer je naam in: Jonny Walker Met nextLine(): Jonny Walker
In tegenstelling tot next(), vangt nextLine() de volledige regel, inclusief spaties, tot een newline-karakter.
Aanbevolen lezing: Java Scanner skipping the nextLine()
Scanner met BigInteger en BigDecimal
Voor hoge-precisie getallen ondersteunt Scanner:
- nextBigInteger() – Leest een
BigInteger - nextBigDecimal() – Leest een
BigDecimal
Voorbeeld: BigInteger en BigDecimal lezen
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Voer een groot integer in: ");
BigInteger waarde1 = input.nextBigInteger();
System.out.println("Met nextBigInteger(): " + waarde1);
System.out.print("Voer een groot decimaal in: ");
BigDecimal waarde2 = input.nextBigDecimal();
System.out.println("Met nextBigDecimal(): " + waarde2);
input.close();
}
}
Output
Voer een groot integer in: 987654321 Met nextBigInteger(): 987654321 Voer een groot decimaal in: 9.55555 Met nextBigDecimal(): 9.55555
Hoe Scanner intern werkt
Scanner leest een volledige regel, splitst het in tokens met whitespace als standaard. Elk token kan dan opgehaald worden met de juiste methode. Gegeven de invoer Hij is 22, zijn de tokens Hij, is en 22.
Tip: Tokens worden gescheiden door spaties, tabs of newlines tenzij je de delimiter aanpast.
Java
- Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
- Java instanceof operator: een uitgebreide gids
- Java-erfenis meesteren: concepten, typen en praktische voorbeelden
- Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
- Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
- Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
- Java Scanner: Uitgebreide gids met praktische voorbeelden
- Java Generics: Herbruikbare, type-veilige code bouwen
- Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen