Wejście i wyjście w Javie: Scanner, println i printf

Zaktualizowano 22 października 2026

Wejście i wyjście w Javie to pierwsza rzecz, której potrzebujesz: prosty program coś wczytuje, liczy coś na tej podstawie i wypisuje wynik. Na pierwsze zadania nic więcej nie trzeba.

Ramka jest zawsze taka sama. Twój kod stoi między nawiasami klamrowymi metody main, a Java wykonuje go linijka po linijce, od góry do dołu. Co dokładnie znaczą public class i static, wyjaśnia artykuł o klasach i obiektach w Javie. Do tego czasu po prostu zostaw ramkę bez zmian.

Wypisywanie i zmienne

System.out.println(...) wypisuje jedną linię. Zmienna to nazwane miejsce w pamięci na jakąś wartość. Tworząc ją, piszesz przed nią typ:

  • int dla liczb całkowitych, np. int age = 19;
  • double dla liczb zmiennoprzecinkowych, np. double price = 4.99; (z kropką, nie z przecinkiem)
  • String dla tekstu w cudzysłowie, np. String name = "Ada"; (więcej w artykule o Stringach w Javie)

Operatorem + łączysz teksty i wartości. Każda instrukcja kończy się średnikiem.

public class Main {    public static void main(String[] args) {        String name = "Ada";        int age = 19;        System.out.println("Hello, " + name + "!");        System.out.println(name + " is " + age + " years old.");        System.out.println("Next year: " + (age + 1));    }}

Wczytywanie danych i obliczenia

Scanner czyta to, co ktoś wpisze w konsoli. nextInt() pobiera następną liczbę całkowitą, nextDouble() następną liczbę zmiennoprzecinkową, a nextLine() całą linię tekstu. Spacje i znaki nowej linii między liczbami nie mają znaczenia.

Java liczy za pomocą +, -, *, / i %. Dwie rzeczy często zaskakują:

  • Gdy dzielisz dwie wartości int, część ułamkowa przepada: 17 / 5 daje 3.
  • % (modulo) zwraca resztę z dzielenia: 17 % 5 daje 2.

Gdy tylko w działaniu bierze udział liczba zmiennoprzecinkowa, Java zachowuje część ułamkową, na przykład / 2.0 zamiast / 2.

import java.util.Scanner;
public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int a = scanner.nextInt();        int b = scanner.nextInt();        System.out.println(a + " / " + b + " = " + a / b);        System.out.println(a + " % " + b + " = " + a % b);        System.out.println("Average: " + (a + b) / 2.0);    }}
Wejście
17 5

W polu „Wejście” widzisz, co program wczytuje.

Ładne formatowanie z printf

Liczby zmiennoprzecinkowe często mają wiele miejsc po przecinku. System.out.printf pozwala ustalić, jak wartość ma wyglądać. W tekście są symbole zastępcze, które po kolei zastępowane są wartościami podanymi dalej:

  • %.2f: liczba zmiennoprzecinkowa z dokładnie dwoma miejscami po przecinku (zaokrąglona)
  • %d: liczba całkowita
  • %s: tekst
  • %n: nowa linia (printf sam jej nie dodaje)
import java.util.Scanner;
public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        double price = scanner.nextDouble();        double withTax = price * 1.19;        System.out.println("Without printf: " + withTax);        System.out.printf("With printf: %.2f €%n", withTax);    }}
Wejście
12.5

Typowe błędy

  • Dzielenie całkowite

    double average = (2 + 3) / 2; daje 2.0, a nie 2.5. Dzielenie odbywa się na dwóch wartościach int, a dopiero potem wynik trafia do zmiennej double. Rozwiązanie: dziel przez 2.0.

  • Plus łączy tekst

    Gdy po lewej stronie stoi tekst, + już tylko dokleja kolejne elementy:

    System.out.println("Sum: " + 2 + 3);   // Sum: 23System.out.println("Sum: " + (2 + 3)); // Sum: 5

    Dlatego obliczenia w wypisywanym tekście bierz w nawiasy.

  • Literówki zgłaszane przez kompilator

    Java rozróżnia wielkość liter: nie zna system.out.println ani string. Gdy brakuje średnika, kompilator zgłasza ';' expected. Numer linii w komunikacie zwykle wskazuje to miejsce albo linię przed nim.

  • Wynik musi się zgadzać co do znaku

    Testy porównują twoje wyjście znak po znaku. Brakująca spacja, jeden przecinek za dużo albo print zamiast println wystarczą, żeby test nie przeszedł. Porównaj dokładnie swoje wyjście z przykładem z zadania. Gdy program ma wypisywać coś innego w zależności od danych, potrzebujesz instrukcji warunkowych w Javie.

Zadania z tego tematu

Przećwicz to, czego się nauczyłeś, od razu w przeglądarce. Testy natychmiast sprawdzają twoje rozwiązanie.

Powiązane artykuły