Skocz do zawartości

Rekomendowane odpowiedzi

  • Zasłużony Fragowicz
Opublikowano

Cześć i czołem :)

 

W poprzednim poradniku nauczyliśmy się jak napisać prosty kalkulator wykonujący podstawowe operacje na wprowadzonych w kodzie liczbach. Jednak nie jest on zbyt praktyczny prawda? W końcu nie będziemy komuś wysyłać kodu, żeby sobie wkleił swoje liczby i potem sprawdził co mu wyjdzie. Lepszym pomysłem będzie zapytać użytkownika o te liczby. I tego też nauczymy się dziś.

 

W tym krótkim poradniku pokażę Wam czym jest Scanner i jak się go używa. Jest to prosta rzecz, która na początku będzie dla Was podstawą i będziecie mogli z niej dużo wyciągnąć (budowanie zdań, obliczanie liczb itp.). Zapraszam do programowania! :)

 

Pobieranie danych od użytkownika

 

Zdaję sobie sprawę, że poprzednie poradniki mogły wydać się Wam... niepotrzebne. Ale to mylne podejście. To czego nauczyliście się wcześniej to podstawa do wykonywania bardziej złożonych kodów. Tak naprawdę deklaracje, inicjalizacje czy wyświetlanie danych będzie Wam potrzebne cały czas, a przynajmniej napewno w pierwszej fazie nauki programowania w języku Java.

 

Pobieranie danych od użytkownika to chyba jedna z najważniejszych rzeczy bo dzięki niej nasz program ma większe "pole manewru". Jest wiele opcji pobierania danych od użytkownika, ale my nauczymy się dziś chyba najprostszej z nich - System.in i klasy Scanner. Poniżej przykład jak wygląda prosty kod przyjmujący imię od użytkownika i wyświetlający je:

 

import java.util.Scanner;
 
public class Greeting{
  public static void main(String[] args){
      String imie; //tutaj deklarujemy zmienną, w której zapiszemy podane przez użytkownika dane
      Scanner input = new Scanner(System.in); //tutaj pobierzemy dane od użytkownika
 
      imie = input.nextLine(); //tutaj program wprowadzi pobrane dane do zmiennej "imie"
 
      System.out.println("Witaj " + imie+ "."); //wyświetlamy wraz z pobranym imieniem użytkownika
  }
}

Jak widzicie pierwszą rzeczą w tym programie jest zadeklarowanie zmiennej imie i przypisanie jej typu String. Oznacza to, że będzie tu przechochowywany tekst.

 

Następnie zadeklarowaliśmy obiekt Scanner nadając mu "nazwę" input. Po tym etapie musieliśmy stworzyć obiekt Scanner za pomocą operatora new. Poniżej wytłumaczenie po kolei co i jak:

Scanner input = new Scanner(System.in); //deklaracja obiektu Scanner o nazwie input = utworzenie obiektu Scanner(nadanie mu parametru System.in czyli wejście danych od użytkownika)

Jak widzicie tworzenie i deklaracja nowego obiektu jest bardzo podobna do deklaracji i inicjalizacji zmiennej. Jest to część Programowania obiektowego, o którym pisać będę w dalszych poradnikach. Ważne jest, abyście zrozumieli co wydarzyło się powyżej bo na tym będzie opierać się dużo przyszłych poradników.

 

Jak mamy już utworzony obiekt Scanner i przypisaliśmy mu parametr System.in to należy teraz odebrać dane od użytkownika i zapisać je w naszej zmiennej imie. Do tego służy ta linijka:

imie = input.nextLine();

Analogicznie do poprzedniej lekcji - inicjalizujemy wprowadzone dane przez użytkownika w zmiennej imie. Istnieje wiele metod odczytu danych w przypadku obiektu Scanner. Powyższy nextLine() służy do pobrania ciągu znaków czyli po prostu String. Inne istniejące możliwości to na przykład:

  • nextInt() - pobiera liczbę całkowitą od użytkownika np. 10
  • nextDouble() - pobiera liczbę zmiennoprzecinkową od użytkownika np. 10,0123

 

Sam obiekt Scanner ma masę innych funkcji, ale te powyższe przedstawiłem podstawowe. Generalnie polecam poczytać o tym tu jeśli ktoś będzie chciał się tym pobawić:

https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

 

Prosty kalkulator przyjmujący dane

 

Teraz wejdźmy sobie w nasz stworzony wcześniej projekt kalkulatorka:

public class Calculator {
    public static void main(String[] args) {
        int number1 = 76423;
        int number2 = 2314;

        int multiplication = number1 * number2;
        int division = number1 / number2;
        int subtraction = number1 - number2;
        int addition = number1 + number2;

        System.out.println("Result of multiplication: " + multiplication + ". \nResult of division: " + division + ". \nResult of subtraction: " + subtraction + ". \nResult of addition: " + addition + ".");
    }
}

Spróbujmy na podstawie powyższych moich wypocin zedytować ten kod, aby przyjmował dwie zmienne int od użytkownika i zapisywał je jako number1 i number2.

 

Poniżej rozpisuję kroki:

  1. Stworzenie i deklaracja dwóch obiektów Scanner z parametrem wejścia użytkownika (System.in). Nazwa dowolna (na przykłąd input1 i input2)
  2. Zapisanie pobranych danych z jednego Scannera i drugiego do dwóch zmiennych Integer - number1 i number2

 

Powinno to wyglądać w ten sposób:

 image.thumb.png.4d794af929603548ee3aab524ade28ba.png 

 

Dlaczego tyle czerwonego? Bo nie zaimportowaliśmy klasy Scanner. Jeśli korzystamy z IntelliJ jedyne co trzeba zrobić to będąc kursorem na linijce deklarowania Scannera kliknąć Alt+Enter i automatycznie zostanie nam zaimportowany Scanner. Drugim sposobem jest po prostu przepisanie poniższego importu:

import java.util.Scanner;

Gdy to zrobimy wszystko będzie wyglądać normalnie i nie będziemy mieć żadnych błędów.

 

Uruchamiając teraz program wszystko zadziała poprawnie. Jednak jest jeden problem. Program od razu będzie chciał pobrać od użytkownika dwie liczby. Skąd użytkownik ma wiedzieć, aby je podać? Nic się nie wyświetli w konsoli.

 

Aby wszystko było jasne i zrozumiałe należy na początku kodu dopisać linijkę, która wyświetli tekst proszący o podanie dwóch liczby przez użytkownika.

 

Cały program ostatecznie będzie wyglądać w ten sposób:

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        int number1;
        int number2;

        Scanner input1 = new Scanner(System.in);
        Scanner input2 = new Scanner(System.in);

        System.out.println("Podaj pierwszą liczbę: ");
        number1 = input1.nextInt();
        
        System.out.println("Podaj drugą liczbę: ");
        number2 = input2.nextInt();

        int multiplication = number1 * number2;
        int division = number1 / number2;
        int subtraction = number1 - number2;
        int addition = number1 + number2;

        System.out.println("Result of multiplication: " + multiplication + ". \nResult of division: " + division + ". \nResult of subtraction: " + subtraction + ". \nResult of addition: " + addition + ".");
    }
}

 

Gratulacje! To działa! :)

 

Teraz poćwiczcie. Już niedługo kolejny poradnik!

 

Zadanie dla Was:

Stwórz program, który będzie przyjmował Twoje imie, nazwisko i datę urodzin, a następnie wszystko zwracał użytkownikowi.

  • Ustrzel fraga! (+) 1
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Polityka prywatności