Skip to main content
Dat 1. Sem Efterår 2025
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Scanner i Java

Hvad er Scanner?

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;

Eksempel: Læs et tal og et ord

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();
    }
}

Eksempel: Læs en hel linje tekst

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);

⚠️ Scanner-fejlen (”Scanner bug”)

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.


✅ Løsning på fejlen

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();

📝 Øveopgaver til Scanner

1. Hej bruger

Lav et program, der:

  • Spørger om brugerens navn

  • Skriver:

    Hej <navn>!
    

2. Alder om 5 år

Lav et program, der:

  • Spørger om brugerens alder

  • Skriver:

    Du er <alder> år gammel.
    Om 5 år er du <alder+5>.
    

3. Yndlingsmad

Lav et program, der:

  • Spørger: “Hvad er din yndlingsmad?”

  • Læser hele linjen (ikke kun ét ord!)

  • Skriver:

    Din yndlingsmad er <mad>.
    

4. Scanner-fejlen 🐞

Lav et program, der spørger om:

  1. Alder (nextInt())
  2. 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.


5. Mini-interview

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()