0Pricing
Java Academy · Lekcja

Odczytywanie liczb i wierszy

nextInt, nextLine i pułapki

Odczytywanie liczb i wierszy to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.

Odczytywanie liczb według typu

Scanner może bezpośrednio odczytywać liczby za pomocą metod takich jak nextInt i nextDouble. Metody te konwertują kolejny token na odpowiadający mu typ prosty.

Odczytywanie liczby całkowitej

nextInt() odczytuje kolejny token i zwraca go jako wartość typu int. W tym przykładzie użyto stałego ciągu znaków, aby można go było uruchomić bez wpisywania danych.

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

Odczytywanie liczby zmiennoprzecinkowej

nextDouble() odczytuje wartość zmiennoprzecinkową. Następnie można użyć jej w obliczeniach.

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

Odczytywanie wielu liczb

Kolejne operacje odczytu liczb pobierają tokeny jeden po drugim, pomijając oddzielające je białe znaki.

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

Sumowanie do zakończenia danych

Połączenie metod hasNextInt() i nextInt() pozwala odczytywać nieznaną liczbę liczb.

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

Słynna pułapka nextLine

Oto klasyczna pułapka: nextInt() odczytuje liczbę, ale pozostawia znak nowego wiersza w buforze. Następne wywołanie nextLine() odczytuje wtedy pozostały pusty wiersz, a nie oczekiwany tekst.

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

Usuwanie pułapki

Rozwiązaniem jest wywołanie dodatkowego nextLine() po nextInt(), aby odczytać pozostający znak nowej linii przed odczytaniem właściwego wiersza.

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

Odczytywanie wartości typu long i boolean

Scanner udostępnia także metody nextLong, nextBoolean i inne. Każda z nich odczytuje token odpowiedniego typu.

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

Niezgodny typ powoduje wyjątek

Jeśli następny token nie jest poprawną liczbą, nextInt zgłasza wyjątek InputMismatchException. W razie wątpliwości zawsze najpierw sprawdzaj za pomocą hasNextInt.

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

Bezpieczne odczytywanie liczb

Solidny schemat odczytuje dane tylko wtedy, gdy dostępna jest wartość właściwego typu; w przeciwnym razie odczytuje i odrzuca niepoprawny 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();
    }
}

Najważniejsze wskazówki

Używaj nextInt i nextDouble do odczytywania liczb, stosuj zabezpieczenia z rodziny hasNext i pamiętaj o odczytaniu pozostającego znaku nowej linii przed przełączeniem się na nextLine.

Szybki test

Sprawdź swoją wiedzę na temat odczytywania liczb i wierszy.

Podsumowanie

Nauczyłeś się odczytywać liczby i wiersze:

  • nextInt, nextDouble i nextLong odczytują liczby określonych typów
  • W przypadku nieznanej liczby danych używaj pętli z hasNextInt
  • Pułapka związana ze znakiem nowej linii: po nextInt wywołaj dodatkowo nextLine
  • Niepoprawne tokeny powodują wyjątek InputMismatchException
  • Dla bezpieczeństwa zabezpieczaj odczyty za pomocą rodziny metod hasNext

Często zadawane pytania

Czy lekcja „Odczytywanie liczb i wierszy” jest bezpłatna?

Tak — pełny tekst „Odczytywanie liczb i wierszy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Odczytywanie liczb i wierszy”?

nextInt, nextLine i pułapki Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Odczytywanie liczb i wierszy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Odczytywanie danych wejściowych za pomocą Scanner
  2. Odczytywanie liczb i wierszy
  3. Walidacja danych użytkownika
  4. Alternatywa dla BufferedReader
← Powrót do Java Academy