CodeGym /Kursy /JAVA 25 SELF /Wprowadzanie z klawiatury

Wprowadzanie z klawiatury

JAVA 25 SELF
Poziom 2, Lekcja 5
Dostępny

1. Odczyt z konsoli, System.in

W poprzednich lekcjach poznaliśmy polecenia wyprowadzania na ekran. Do tego używaliśmy obiektu System.out i jego method print() oraz println(). Proste i wygodne.

Ale, jak się zapewne domyślacie, sam wyjściowy wydruk na ekran to za mało. Celem większości programów jest zrobienie czegoś pożytecznego dla użytkownika. Dlatego bardzo często trzeba, aby użytkownik mógł wprowadzać dane z klawiatury.

Podobnie jak do wyjścia, do wprowadzania danych również istnieje specjalny obiekt — System.in. Niestety nie jest on tak wygodny, jak byśmy chcieli. Ten obiekt pozwala odczytywać dane z klawiatury, ale tylko po jednym znaku naraz.

Dlatego skorzystamy z jeszcze jednej klasy, która w parze z obiektem System.in da nam wszystko, czego potrzebujemy. W Javie od dawna są klasy na każdą okazję. I z jedną z nich zaraz się zapoznamy.

2. Klasa Scanner

Klasa Scanner (pełna nazwa java.util.Scanner) potrafi odczytywać dane z różnych źródeł: konsoli, plików, Internetu. Jeśli chcemy, aby odczytywała dane z klawiatury, musimy przekazać jej obiekt System.in jako parametr — źródło danych. A obiekt typu Scanner sam już się zorientuje, co z tym zrobić.

Odczyt z klawiatury za pomocą obiektu typu Scanner będzie wyglądał mniej więcej tak:

Kod Objaśnienie
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
Tworzymy obiekt klasy Scanner. Czytamy z klawiatury wiersz tekstu. Czytamy z klawiatury liczbę.

Wygląda na nieskomplikowane, ale czy naprawdę wszystko jest takie proste?

Myślę, że macie mnóstwo pytań i zaraz na nie odpowiemy.

Ale najpierw zaprezentujemy przykład pełnego programu, w którym używana jest klasa Scanner:

void main()
{
    Scanner console = new Scanner(System.in);
    String name = console.nextLine();
    int age = console.nextInt();

    System.out.println("Name: " + name);
    System.out.println("Age: " + age);
}

3. Tworzenie obiektu Scanner

Pierwsze pytanie — co to za wiersz Scanner console = new Scanner(System.in);?

Taki wiersz może być mylący, jednak będziecie go często spotykać. Myślę więc, że nadszedł czas wyjaśnić, co tu jest napisane.

Przypomnijmy, jak zwykle tworzymy zmienną tekstową:


String str = "tekst";
Deklaracja i inicjalizacja zmiennej typu String

Najpierw zapisujemy typ zmiennej (String), potem jej nazwę (str) i wreszcie, po znaku równości, zapisujemy wartość.

W naszym dziwnym wierszu w rzeczywistości jest dokładnie to samo:


Scanner console = new Scanner(System.in);
Deklaracja i inicjalizacja zmiennej typu Scanner

Wszystko, co znajduje się po lewej stronie znaku równości, to deklaracja zmiennej typu Scanner o nazwie console. Można ją było nazwać na przykład s albo scanner, a nawet keyboard. Wtedy kod wyglądałby tak:

Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();

Myślę, że teraz wszystko stało się dużo jaśniejsze.

A kod, który znajduje się po prawej stronie znaku równości, jest nieco bardziej złożony. Mam na myśli new Scanner(System.in); Ale i tu nie ma nic kosmicznego.

W tym kodzie mówimy maszynie wirtualnej Java: utwórz nowy obiekt (słowo new) typu Scanner i przekaż mu jako parametr to, z czego nowo utworzony obiekt Scanner będzie pobierał dane — obiekt System.in.

Po wykonaniu całego tego wiersza będziemy mieli zmienną o nazwie console typu Scanner, za pomocą której nasz program będzie mógł odczytywać dane z klawiatury.

4. Wywoływanie method

W powyższym przykładzie nasza zmienna console typu Scanner przechowywała w sobie referencję do obiektu typu Scanner.

Aby wywołać methody obiektu, na który wskazuje zmienna, należy po nazwie zmiennej napisać kropkę, a następnie nazwę methody i parametry. Ogólny zapis tego polecenia jest taki:


variable.method(parametry);
Wywołanie methody obiektu, na który wskazuje zmienna

Przykłady:

System.out.println("Cześć");
System.out.println(1);

Jeśli nie planujesz przekazywać do funkcji parametrów, należy napisać po prostu puste nawiasy:


variable.method();
Wywołanie methody bez przekazywania parametrów

Przykład:

System.out.println();

5. Wprowadzanie danych z konsoli

Wprowadzać dane z klawiatury, gdy mamy obiekt typu Scanner, jest bardzo łatwo.

Aby odczytać z klawiatury wiersz (łańcuch), użyj polecenia:


String str = console.nextLine();

Gdy program dojdzie do wykonania tego wiersza, zatrzyma się i będzie czekał, aż użytkownik wprowadzi dane i naciśnie klawisz Enter. Następnie wszystko, co wprowadził użytkownik, zostanie zapisane w zmiennej str.

Aby odczytać z klawiatury liczbę całkowitą, użyj polecenia:


int number = console.nextInt();

Tu wszystko działa analogicznie do poprzedniego polecenia. Gdy program dojdzie do wykonania tego wiersza, zatrzyma się i będzie czekał, aż użytkownik wprowadzi dane i naciśnie klawisz Enter. Następnie wszystko, co wprowadził użytkownik, zostanie przekształcone na liczbę i zapisane w zmiennej number.

Jeśli użytkownik wprowadzi dane, których nie można przekształcić na liczbę całkowitą, w programie wystąpi błąd i zakończy on działanie.

Aby odczytać z klawiatury liczbę zmiennoprzecinkową, użyj polecenia:

double number = console.nextDouble();

Polecenie to działa w pełni analogicznie do nextInt(), tylko sprawdza, czy wprowadzone dane można przekształcić na liczbę typu double.

Przykład programu, który odczytuje z klawiatury dwie liczby i wyświetla ich sumę:

void main()
{
    Scanner console = new Scanner(System.in);
    int a = console.nextInt();
    int b = console.nextInt();

    System.out.println(a + b);
}

Uwaga

Użytkownik może wprowadzić kilka liczb w jednym wierszu, oddzielając je spacjami: taka sytuacja zostanie poprawnie obsłużona przez methody klasy Scanner. Jednak liczby zostaną odczytane przez program dopiero po naciśnięciu klawisza Enter.

1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 5
Niedostępne
Wczytywanie hasła 🔒
Wczytywanie hasła 🔒
1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 5
Niedostępne
Rejestracja nowego gracza 🎮
Rejestracja nowego gracza 🎮
1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 5
Niedostępne
Obliczanie całkowitego kosztu zakupów 🛒
Obliczanie całkowitego kosztu zakupów 🛒
1
Zadanie
JAVA 25 SELF, poziom 2, lekcja 5
Niedostępne
Tworzenie wizytówki 📇
Tworzenie wizytówki 📇
1
Ankieta/quiz
Wprowadzenie do typów int i String, poziom 2, lekcja 5
Niedostępny
Wprowadzenie do typów int i String
Wprowadzenie do typów int i String
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION