0Pricing
Java Academy · Lekcja

Odczytywanie danych wejściowych za pomocą Scanner

Odczytuj dane użytkownika z System.in

Odczytywanie danych wejściowych za pomocą Scanner to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 1 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 z klawiatury

Do odczytywania danych wpisywanych przez użytkownika Java udostępnia klasę Scanner w pakiecie java.util. Należy połączyć ją z System.in, czyli standardowym strumieniem wejściowym.

Scanner ułatwia odczytywanie słów, wierszy i liczb.

Tworzenie obiektu Scanner

Obiekt Scanner należy utworzyć, przekazując System.in. W przedstawionych przykładach użyto stałych ciągów znaków, aby można je było uruchomić bez danych wejściowych, ale te same metody mają zastosowanie do danych wpisywanych z klawiatury.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("Hello");
        String word = scanner.next();
        System.out.println(word);
        scanner.close();
    }
}

Odczytywanie pojedynczego słowa

next() odczytuje jeden token, czyli tekst aż do napotkania kolejnego białego znaku. Spacje i znaki nowego wiersza oddzielają tokeny.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("apple banana cherry");
        System.out.println(scanner.next());
        System.out.println(scanner.next());
        scanner.close();
    }
}

Odczytywanie całego wiersza

nextLine() odczytuje wszystko aż do końca wiersza, łącznie ze spacjami. Należy użyć tej metody, gdy dane wejściowe zawierają wiele słów, które mają zostać odczytane razem.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("John Smith");
        String fullName = scanner.nextLine();
        System.out.println("Name: " + fullName);
        scanner.close();
    }
}

Sprawdzanie, czy są dalsze dane

hasNext() zwraca wartość true, dopóki istnieją kolejne tokeny. Pozwala to wykonywać pętlę aż do wyczerpania danych wejściowych.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("red green blue");
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
        scanner.close();
    }
}

Odczytywanie wiersz po wierszu

hasNextLine() należy połączyć z nextLine(), aby przetwarzać dane wielowierszowe po jednym wierszu.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("line one\nline two\nline three");
        while (scanner.hasNextLine()) {
            System.out.println("> " + scanner.nextLine());
        }
        scanner.close();
    }
}

Przykład użycia prawdziwej klawiatury

W przypadku rzeczywistych danych wejściowych użytkownika należy napisać poniższe wiersze. Należy wypróbować je lokalnie: program zatrzyma się przy nextLine i będzie czekać, aż zostanie wpisany tekst i naciśnięty klawisz Enter.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();
        System.out.println("Hello, " + name);
        scanner.close();
    }
}

Zamykanie obiektu Scanner

Wywołanie close() zwalnia zasób. Czytelniejszym rozwiązaniem jest konstrukcja try-with-resources, która automatycznie zamyka skaner po zakończeniu bloku.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner("data here")) {
            System.out.println(scanner.next());
        }
    }
}

next a nextLine

Należy pamiętać o kluczowej różnicy: next() zatrzymuje się na białym znaku i zwraca jeden token, natomiast nextLine() pobiera pozostałą część bieżącego wiersza.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("first second third");
        System.out.println(scanner.next());
        System.out.println(scanner.nextLine());
        scanner.close();
    }
}

Własne separatory

Za pomocą useDelimiter można zmienić sposób oddzielania tokenów. W tym przypadku wartości rozdziela przecinek zamiast białych znaków.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("a,b,c");
        scanner.useDelimiter(",");
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
        scanner.close();
    }
}

Podstawy klasy Scanner

Należy utworzyć jeden obiekt Scanner dla System.in, używać next do odczytywania słów, a nextLine do odczytywania całych wierszy, wykonywać pętlę z użyciem metod z rodziny hasNext i zawsze zamykać skaner.

Szybki test

Sprawdź podstawową znajomość klasy Scanner.

Podsumowanie

Poznałeś odczytywanie danych wejściowych za pomocą klasy Scanner:

  • Obiekt należy utworzyć za pomocą new Scanner(System.in)
  • next() odczytuje słowo, a nextLine() cały wiersz
  • Pętlę należy wykonywać z użyciem hasNext() lub hasNextLine()
  • Obiekt należy zamknąć za pomocą close() lub konstrukcji try-with-resources
  • useDelimiter zmienia separator tokenów

Często zadawane pytania

Czy lekcja „Odczytywanie danych wejściowych za pomocą Scanner” jest bezpłatna?

Tak — pełny tekst „Odczytywanie danych wejściowych za pomocą Scanner” 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 danych wejściowych za pomocą Scanner”?

Odczytuj dane użytkownika z System.in Ć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 1 z 4.

Ile czasu zajmuje lekcja „Odczytywanie danych wejściowych za pomocą Scanner”?

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