Java Academy · Lektion

Läsa tal och rader

nextInt, nextLine och fallgropar

Lektion 2 av 413 steg

Läsa tal och rader är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.

Läsa tal med angiven typ

Scanner kan läsa tal direkt med metoder som nextInt och nextDouble. De konverterar nästa token till motsvarande primitiva typ.

Läsa ett heltal

nextInt() läser nästa token och returnerar den som en int. Här använder vi en fast sträng så att exemplet kan köras utan att du behöver skriva något.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("25");
        int age = scanner.nextInt();
        System.out.println(age + 1);
        scanner.close();
    }
}

Läsa ett flyttal

nextDouble() läser ett flyttal. Sedan kan du använda det i beräkningar.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("3.5");
        double radius = scanner.nextDouble();
        System.out.println(radius * 2);
        scanner.close();
    }
}

Läsa flera tal

Flera numeriska läsningar hämtar token efter token och hoppar över blankstegen mellan dem.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("10 20 30");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();
        System.out.println(a + b + c);
        scanner.close();
    }
}

Summera tills det är klart

Kombinera hasNextInt() med nextInt() för att läsa ett okänt antal tal.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("5 15 25 35");
        int total = 0;
        while (scanner.hasNextInt()) {
            total += scanner.nextInt();
        }
        System.out.println(total);
        scanner.close();
    }
}

Den klassiska fallgropen med nextLine

Här är den klassiska fallgropen: nextInt() läser talet men lämnar radbrytningstecknet i bufferten. Nästa nextLine() läser då den kvarlämnade tomma raden i stället för texten du förväntade dig.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42\nHello World");
        int n = scanner.nextInt();
        String line = scanner.nextLine();
        System.out.println("Number: " + n);
        System.out.println("Line: [" + line + "]");
        scanner.close();
    }
}

Åtgärda fallgropen

Lösningen är att anropa en extra nextLine() efter nextInt() för att konsumera den kvarvarande radbrytningen innan riktig radindata läses in.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("42\nHello World");
        int n = scanner.nextInt();
        scanner.nextLine();
        String line = scanner.nextLine();
        System.out.println("Number: " + n);
        System.out.println("Line: [" + line + "]");
        scanner.close();
    }
}

Läsa long-värden och boolean-värden

Scanner erbjuder även nextLong, nextBoolean och andra metoder. Var och en läser en token av motsvarande typ.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("9000000000 true");
        long big = scanner.nextLong();
        boolean flag = scanner.nextBoolean();
        System.out.println(big);
        System.out.println(flag);
        scanner.close();
    }
}

Felaktiga typer leder till undantag

Om nästa token inte är ett giltigt tal kastar nextInt ett InputMismatchException. Kontrollera alltid med hasNextInt först när ni är osäkra.

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("abc");
        try {
            scanner.nextInt();
        } catch (InputMismatchException e) {
            System.out.println("Not an integer!");
        }
        scanner.close();
    }
}

Säker numerisk inläsning

Ett robust mönster läser bara när rätt typ är tillgänglig. Annars konsumeras och ignoreras den felaktiga token.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("x 7 y 9");
        int sum = 0;
        while (scanner.hasNext()) {
            if (scanner.hasNextInt()) {
                sum += scanner.nextInt();
            } else {
                scanner.next();
            }
        }
        System.out.println(sum);
        scanner.close();
    }
}

Viktiga påminnelser

Använd nextInt och nextDouble för tal, skydda läsningen med hasNext-metoderna och kom ihåg att konsumera den kvarvarande radbrytningen innan ni växlar till nextLine.

Snabb kontroll

Testa era kunskaper om att läsa tal och rader.

Sammanfattning

Ni har lärt er att läsa tal och rader:

  • nextInt, nextDouble och nextLong läser tal av angivna typer
  • Använd en loop med hasNextInt när antalet är okänt
  • Fallgropen med radbrytningen: anropa en extra nextLine efter nextInt
  • Felaktiga token kastar InputMismatchException
  • Skydda läsningen med hasNext-metoderna
Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
104
Lektioner
374

Vanliga frågor

Är lektionen ”Läsa tal och rader” gratis?

Ja – hela texten till ”Läsa tal och rader” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Läsa tal och rader”?

nextInt, nextLine och fallgropar Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Java Academy?

Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Läsa tal och rader”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Java Academy-lektionen?

Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Läsa indata med Scanner
  2. Läsa tal och rader
  3. Validera användarindata
  4. Alternativet BufferedReader
← Tillbaka till Java Academy