Scanner i Java
Scanner-klassen i Java bruges til at læse input fra brugeren (f.eks. fra tastaturet). Man kan læse tal, tekst og andre datatyper.
For at bruge den, skal man importere klassen:
import java.util.Scanner;
import java.util.Scanner;
public class ScannerEksempel {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Læs et heltal
System.out.print("Indtast din alder: ");
int alder = scanner.nextInt();
System.out.println("Du er " + alder + " år gammel.");
// Læs ét ord
System.out.print("Indtast dit navn: ");
String navn = scanner.next();
System.out.println("Hej, " + navn + "!");
scanner.close();
}
}
Hvis du vil læse en hel linje (inkl. mellemrum), bruger du nextLine():
System.out.print("Skriv en sætning: ");
String sætning = scanner.nextLine();
System.out.println("Du skrev: " + sætning);
En klassisk fejl opstår, når man blander nextInt(), nextDouble() osv. med nextLine().
👉 Eksempel:
System.out.print("Indtast din alder: ");
int alder = scanner.nextInt();
System.out.print("Indtast dit navn: ");
String navn = scanner.nextLine(); // <-- BUG: hopper over input!
Hvorfor sker det?
Når du trykker Enter efter tallet, bliver linjeskiftet (\n) liggende i inputbufferen.
nextLine() læser det som en tom linje.
Tilføj en ekstra scanner.nextLine() for at “rydde op” i bufferen:
System.out.print("Indtast din alder: ");
int alder = scanner.nextInt();
scanner.nextLine(); // rydder linjeskiftet
System.out.print("Indtast dit navn: ");
String navn = scanner.nextLine();
Lav et program, der:
Spørger om brugerens navn
Skriver:
Hej <navn>!
Lav et program, der:
Spørger om brugerens alder
Skriver:
Du er <alder> år gammel. Om 5 år er du <alder+5>.
Lav et program, der:
Spørger: “Hvad er din yndlingsmad?”
Læser hele linjen (ikke kun ét ord!)
Skriver:
Din yndlingsmad er <mad>.
Lav et program, der spørger om:
- Alder (
nextInt()) - Navn (
nextLine())
👉 Kør det og bemærk, at navnet springes over.
Ret det derefter ved at tilføje en ekstra scanner.nextLine() efter alderen.
Lav et program, der spørger brugeren om:
- Deres navn (hele linjen)
- Deres alder (heltal)
- Deres yndlingsfarve (hele linjen)
Programmet skal udskrive:
Dette er <navn>. De er <alder> år gamle og deres yndlingsfarve er <farve>.
🔑 Tips:
- Husk at importere
java.util.Scanner - Opret en scanner med
new Scanner(System.in) - Luk scanneren til sidst med
scanner.close()