Lekcja 03. Operacje na zmiennych. Przypisania. Prosty kalkulator.
Inicjalizacja zmiennych w Javie
Stwórzmy sobie na początku nową klasę i nazwijmy ją operacje na zmiennych. Teraz stwórzmy funkcję main i wypiszmy tekst np. operacje na zmiennych. Wypisywanie tekstu już pojawiało się nie raz, natomiast spróbujmy wypisać jakąś zmienną którą sobie sami stworzymy. Niech to będzie po prostu zmienna x typu int.
int x;
System.out.println("x = " + x);
Jednak gdy chcemy ją od razu wypisać za pomocą System.out.println to jest błąd. Intelij nam podpowiada
Variable 'x' might not have been initialized
Przypisywanie wartości do zmiennych
Otóż mamy zmienną x tylko zadeklarowaną, natomiast nie ustawiliśmy jej żadnej wartości. Aby ze zmiennej można było odczytać wartość to najpierw trzeba jakąś wartość przypisać. Służy do tego symbol =. Przypiszmy więc wartość np. 30 i teraz uruchommy.
int x;
x=30;
System.out.println("x = " + x);
Przypisanie w Javie a symbol równa się z matematyki
Jednak musimy się jeszcze w tym miejscu zatrzymać na chwilę. Symbol równa się w programowaniu to nie jest ten sam symbol co znamy z lekcji matematyki. Równa się to nie znaczy to co po prawej jest równe temu co lewej. W Javie to znaczy weź wartość z prawej strony i przypisz ją do zmiennej po lewej stronie. W kolejnej linijce możemy np. napisać coś w stylu x = 31.
int x;
x=30;
x=31;
System.out.println("x = " + x);
No w matematyce to by była sprzeczność x = 30 i x = 31 co to ma znaczyć to ile wynosi x. No instrukcje w funkcji main są wykonywane po kolei tak jak się czyta. To znaczy od góry do dołu, czyli najpierw do x zostanie przypisana wartość 30, jednak w kolejnej instrukcji zostanie nadpisana do 31 a dopiero później wypisana. Dlatego jest 31. Natomiast pomiędzy tymi linijkami wypisując x, będzie miał wartość 30. Oczywiście w instrukcji przypisania strony mają znaczenie. Nie można napisać odwrotnie, np. 32 = x. Koniecznie z lewej strony musi być jakaś zmienna a nie wartość liczbowa. Natomiast z prawej może to być zarówno zmienna jaki i stała oraz zwykła liczba.
Program Kto Ty
No to już umiemy przypisywać wartość do zmiennej. Zanim przejdziemy do kolejnych informacji zróbmy sobie jakiś przykład. Zróbmy prosty program który będzie pytał użytkownika o imię oraz wiek a później będzie wypisywał te informacje w konsoli. Najpierw zróbmy do tego nową klasę. Nazwę Ją KtoTy. Teraz standardowo funkcja main i wypiszmy pytanie: Jak masz na imię? Oraz stwórzmy sobie nową zmienną typu String o nazwie imię.
System.out.println("Jak masz na imię?");
String imie;
imie = "Marcin";
I teraz będziemy chcieli tam zapisać informację od użytkownika. Normalnie moglibyśmy tu wpisać jakąś wartość w cudzysłowach np. Marcin. No ale nie o to nam chodzi. Chcemy aby tam za każdym uruchomieniem programu można było podać bezpośrednio w konsoli, a nie tak zapisane na stałe.
Jak używać klasy Scanner?
Do tego celu wykorzystamy klasę Scaner. Klasy to typy złożone. Musisz więc zrobić nową zmienną typu Scaner. Nazwijmy ją s.
Scanner s;
To jest definicja a zainicjalizować musisz ją takim czymś:
s = new Scanner(System.in);
No i również nie przejmuj się że nie rozumiesz jeszcze tej inicjalizacji. To jest tworzenie obiektu typu Scanner, a to możesz zrozumieć dopiero rozumiejąc programowanie obiektowe. W każdym razie jeśli masz Scanner wyświetlony czerwoną czcionką to znaczy, że nie masz go zaimportowanego. Chodzi o to że programiści mogą pisać swoje własne klasy i ktoś też może sobie nazwać np. Scanner. I wtedy byłby konflikt bo o który Scanner chodzi. Dlatego trzeba dokładniej sprecyzować o jaki Scanner w tym przypadku nam chodzi.
Jak zaimportować pakiet?
Scanner który nas interesuje znajduje się w pakiecie java.util. A co to znowuż pakiet? O pakietach z pewnością powiemy sobie jeszcze dokładniej w jednej z kolejnych lekcji. Żeby określić się jasno to trzeba by za każdym razem używać jednoznacznej lokalizacji tej klasy. Czyli java.util.Scanner.
java.util.Scanner s;
s = new java.util.Scanner(System.in);
No ale oczywiście pisanie tego za każdym razem nie jest przyjemne więc do tego służą importy. Skoro w naszym programie używamy tylko tego Scannera z java util i żadnego innego to można napisać na samej górze
import java.util.Scanner;
i teraz nie trzeba będzie używać w kodzie java.util. Bo wiadomo że wszystkie klasy Scaner będą właśnie z tego pakietu.
Pobieranie danych za pomocą scannera
Pobieranie tekstu za pomocą scannera
No dobra, wykorzystajmy w końcu nasz scanner do pobierania danych. Zamiast wpisanego na stałe imienia napiszmy nazwę naszego scannera czyli s oraz nextLine().
imie = s.nextLine();
I uruchommy nasz program już na tym etapie. Teraz nasz program nie zakańcza swojego działania od razu. Pojawiła się konsola, a w niej pytanie.
Jak masz na imię?
teraz mamy możliwość wpisania tekstu. Wpiszmy tam cokolwiek i dopiero po wciśnięciu Enter pojawiła się linijka
Process finished with exit code 0.
Co znaczy że program się zakończył.
Pobieranie liczby za pomocą scannera
No to dokończmy nasz program. Zadajmy jeszcze jedno pytanie. Ile masz lat? Następnie zadeklarujmy sobie zmienną typu int o nazwie wiek. I przypiszmy do niej wartość z konsoli za pomocą scannera. Tym razem użyjemy metod nextInt() ponieważ będziemy oczekiwali liczby. I na końcu wypiszmy pobrane informacje.
System.out.println("Ile masz lat?");
int wiek;
wiek = s.nextInt();
System.out.println("Cześć " + imie + ". Wiem że masz " + wiek + " lat.");
W ten sposób wypiszemy zdanie zależne od podanych wartości w konsoli. Sprawdźmy jak to działa. Ja podam swoje dane czyli Marcin i 25. No i w zdaniu zostały użyte wartości które my podali. Tak właśnie miało być.
Cześć Marcin. Wiem że masz 25 lat.
Komentarze
Wróćmy teraz do klasy OperacjeNaZmiennych po kolejne informacjie. Najpierw jednak powiemy sobie coś o komentarzach. Otóż jeżeli napiszemy gdzieś dwa ukośniki to reszta linijki jeż nie będzie brana pod uwagę przez kompilator. Program będzie się zachowywał tak samo jak by tego w ogóle nie było. Jest jeszcze komentarz wieloliniowy – zaczynamy go od /* i komentarzem będzie wszystko do napotkania znaków */.
//To jest komentarz jednolinijkowy
/* A to
jest
komentarz
wielolinijkowy
*/
Komentarzy można używać np. do wyjaśniania niektórych fragmentów kodu. Ponieważ pisząc program wszystko wiemy – natomiast jeśli wracamy do programu po jakimś czasie, to nie zawsze pamiętamy co mieliśmy na myśli. Czasem więc można zostawić podpowiedzi. Ja właśnie będę w tym kursie zostawiał komentarze po to abyś później mógł sobie wrócić jedynie do kodu źródłowego i na jego podstawie przypomnieć najważniejsze informacje z lekcji.
Wielokrotna deklaracja
Zadeklarujmy jeszcze zmienne typu int y oraz z.
int y;
int z;
W taki sposób można deklarować dowolną ilość zmiennych, ale jeśli są tego samego typu to można również napisać typ tylko raz a następnie nazwy zmiennych po przecinku. np:
int x1, x2, x3;
Można również połączyć deklaracje z inicjalizacją i napisać coś w stylu
int zmienna = 4;
Nawet można połączyć wielokrotną deklarację i zainicjować dowolny elemenent np.
int y1, y2 = 10, y3;
Można oczywiście przypisać jedną zmienną do drugiej np:
y1 = y2;
Czyli wartość zmiennej y2 przypisujemy do zmiennej y1. Można też w jednej instrukcji przypisać nową wartość do wielu zmiennych np:
x1 = x2 = x3 = 5;
Wtedy brana jest wartość z wyrażenia tego najbardziej po prawej stronie w tym przypadku 5 i przypisywana jest ona do wszystkich wcześniejszych zmiennych. Te wszystkie metody przypisań, które przedstawiłem na przykładzie liczb całkowitych tak samo wyglądają dla innych typów.
Operatory arytmetyczne
Teraz natomiast omówię operatory arytmetyczne, które można używać na liczbach. Wyglądają one tak samo jak na lekcjach matematyki. Mamy możliwość + – * i /. Oraz dodatkowo możemy wykonywać operację reszty z dzielenia tak zwane modulo zapisywane jako %. Możesz na przykład do zmiennej suma przypisać wartość zapisaną jako 1 + 1;
int suma = 1 + 1;
Działanie zostanie wykonane i do zmiennej suma będzie przypisana dwójka. Tutaj pokaże ci jeszcze kolejny trick w inteliJ. Pamiętasz że wypisując sout masz od razu System.out.prinln? – Ale możesz napisać soutv (dodatkowe v od value) i wtedy możesz od razu wybrać jaką wartość chcesz wypisać. Jest to jeszcze większe ułatwienie.
Zmienianie wartości zmiennej
Ok, idźmy dalej z tematem. Możliwe a nawet bardzo często wykonywane są operacje zwiększenia wartości danej zmiennej niezależnie jaką wartość aktualnie dana zmienna posiada. Np. tutaj mamy w zmiennej x wartość 30 natomiast później zmieniamy na 31.
x=30;
x=31;
Załóżmy że w tym miejscu nie znamy wartości tej zmiennej, bo np. wczytaliśmy ją od użytkownika natomiast chcemy ją zwiększyć o 10 niezależnie od tego jaką ma teraz wartość. Można to zrobić zapisując;
x = x + 10;
No i osoby dobre z matmy, które nie miały wcześniej do czynienia z programowaniem w takim zapisie od razu widzą sprzeczność. Bo nie ma takiej liczby która była by równa sobie powiększonej o dziesięć. No ale jak w przypadku operatorów można widzieć analogie do matematyki, to ten znak = jest całkiem czym innym i w programowaniu to jest całkiem normalna sytuacja. A zdarzają się przypadki że osoby dobre z matematyki mają problem z programowaniem. Jedną z możliwych przyczyn jest zbyt pobieżne przedstawienie różnicy pomiędzy znakiem przypisania w programowaniu, a znakiem równa się w matematyce. W przypadku programowania taki zapis odczyta wartość ze zmienne x, w tym przypadku 30 doda 10 i powstałą wartość przypisze do x – po wykonaniu tej instrukcji wartość x będzie wynosiła 40.
Złożone operacje przypisanie
Operacje zmieniania danej zmiennej są w programowaniu częstym przypadkiem. Powstały nawet skróty do tego. Można połączyć przypisanie z jakąś operacją arytmetyczną na zmiennej. Wtedy najpierw podaje się operator a później znak równa się i wartość o jaką chcemy zmienić. Weźmy zmienną o nazwie zmienna.
int zmienna = 4;
Aktualnie ma wartość 4. Możemy teraz wartość tą zwiększyć o 6 wpisując:
zmienna += 6;
Wynikiem tej instrukcji jest zmienienie wartości zmienna do 10. Bo początkowe 4 jest zwiększane o 6. Gdybyśmy napisali:
zmienna *= 3;
To teraz zmienna powinna być zwiększona trzykrotnie – do 12. (z początkowych 4) Natomiast:
zmienna /= 2;
Da nową wartość o połowę mniejszą, czyli dokładnie 2 (z początkowych 4). Kolejny przykład:
zmienna -=1;
Czyli pomniejszanie o 1, więc nową wartością będzie 3. I eszcze ostatni przykład
zmienna %=3;
czyli reszta z dzielenia przez 3. 4 dzielone na 3 to jest 1 i reszty 1 i tu właśnie ta reszta jest nową wartością.
Zmienianie wartości o 1
To jak już jesteśmy przy zmienieniu wartości to powiem że najczęstszą zmianą wartości w programowaniu jest zmiana o 1;
zmienna = zmienna + 1;
Do tego poznaliśmy skrót, można to zapisać jako
zmienna += 1;
to jest skrót ogólny i można zwiększyć zmienną o dowolną wartość ale specjalnie dla jedynki powstał jeszcze bardziej skrócony zapis. I wystarczy samo
zmienna++;
Ta operacja nazywa się w programowaniu inkrementacją, istnieje również zmniejszenie o 1 czuli dekrementacja:
zmienna--;
Inkrementacja oraz dekrementacja
Inkrementacja występuje w 2 wersjach postinkrementacja oraz preinkrementacja. Analogicznie dekrementacja może być użyta jako postdekrementacja oraz predekrementacja. W postinkrementacji plusy są za zmienną a w postdekrementacji minusy są za zmienną. Natomiast w preinkrementacji plusy są przed zmienną a predektementacji minusy są przed zmienną. Czy to się czymś różni. Owszem. Najlepiej będzie to pokazać
Zróbmy 2 kolejne zmienne typu int, jedna niech się nazywa i od inkrementacja i niech przyjmie wartość 10 natomiast druga niech się nazywa d od dekrementacja i również niech będzie miała wartość 10.
int i = 10;
int d = 10;
Teraz zarówno jedną jak i drugą zmienną wypiszemy 2 razy. I od razu w pierwszym wypisaniu zróbmy postinkrementacje oraz postdekrementacja.
System.out.println("i = " + i++);
System.out.println("i = " + i);
System.out.println("d = " + d--);
System.out.println("d = " + d);
Jakie teraz wyniki zostaną wypisane na konsoli. No można by pomyśleć że będzie 2 razy wypisana 11 oraz 2 razy 9. Ale tak nie jest. Jest wypisane 10 11 oraz 10 9. To właśnie przez te post. Do wyrażenia jest brana wartość jeszcze z przed zmiany wartości i oraz d. czyli w przypadku postinkrementacji oraz postdekrementacji używanej w jakimś wyrażeniu będzie brana ta wartość wcześniejsza. No i tu różnicą jest z pre.
System.out.println("i = " + ++i);
System.out.println("i = " + i);
System.out.println("d = " + --d);
System.out.println("d = " + d);
Preinkrementacja oraz predekrementacja, gdzie to nowe wartości są od razu brane do wyrażenia, więc i wypisane są od razu zmienione i teraz jest właśnie 11, 11, 9, 9. Niby szczegół, ale warto wiedzieć. Natomiast nie ma różnicy czy będziesz używał post czy pre jeśli nie będziesz tego używał w wyrażeniu. Np. jeśli zrobisz postinkrementacje czy postdekrementacje w osobnej instrukcji jeszcze przed wypisaniem to sprawę będziesz miał jasną.
i++;
System.out.println("i = " + i);
System.out.println("i = " + i);
d--;
System.out.println("d = " + d);
System.out.println("d = " + d);
Instrukcje wykonają się poklei więc najpierw inkrementacja lub dekrementacja, a dopiero w następnej instrukcji wypisanie. Różnica między tymi post i pre jest tylko wtedy gdy w jednej instrukcji robisz coś jeszcze, np. wypisujesz czy przypisujesz do zmiennej.
Kolejność wykonywania działań w Javie
Kolejnym aspektem o którym muszę wspomnieć jest kolejność wykonywania działać. Żeby to pokazać to zróbmy zmienną wynik i przypiszmy do niej:
int wynik = 2 + 2 * 2;
No 2 + 2 to jest 4 i razy 2 to by było osiem, natomiast w matematyce oraz w języku java niektóre operatory mają wyższy priorytet i tak mnożenie czy dzielenie jest wykonywane wcześniej niż dodawanie czy odejmowanie. Tak więc w tym przypadku jest to 2* 2 czyli 4 i dopiero do tego dodawane jest 2, stąd mamy 6. Jeśli nie jesteś pewien kolejności wykonywania działań to zawsze możesz wymusić kolejność używając nawiasów.
int wynik = (2 + 2) * 2;
W tym przypadku najpierw wykona się dodawanie, a dopiero wynik, czyli 4 będzie przemnożony razy 2 i stąd 8.
Tak więc bez używania nawiasów, największy priorytet z dzisiaj poznanych operatorów mają inkrementacja i dekrementacja, później jest to mnożenie i dzielenie, następnie jest wykonywane dodawanie oraz odejmowanie, a na samym końcu są operatory przypisania zarówno ten podstawowy jak i te z dodatkowym operatorem.
Literały
Dzisiaj w przykładach były najczęściej zmienne typu int. Natomiast z innymi typami prostymi jest podobnie, natomiast jest również coś o czym musisz wiedzieć. Zadeklarujmy i od razu zainicjujmy sobie inne typy proste. Na początek typ byte i zmienna short, maksymalna wartość to 127, natomiast spróbujmy przypisać wartość większą. InteliJ od razu podpowiada błąd ok, zmieńmy na 127,
byte zmiennaByte = 127;
Kolejny typ – short – dla kompletu zapiszmy go sobie w tym miejscu również oraz typ int którego najczęściej my używali.
short zmiennaShort = 1234;
int zmiennaInt = 54321;
Typ long
Natomiast niestandardowe zachowanie będzie przy typie long. Jak wiemy z poprzedniej lekcji typ int ma maksymalny zakres 2 miliardy i coś. Przypiszmy taką liczbę do typu long i jak najbardziej jest wszystko w porządku. W tym miejscu powiem Ci jeszcze jedną trochę mniej znaną ciekawostkę. W zapisie liczb możesz używać znaku podkreślenia. Jest on całkowicie ignorowany przez kompilator i służy jedynie dla człowieka aby poprawić czytelność. Ludzie często lubią grupować liczby po 3 cyfry aby łatwiej się w liczbie odnaleźć. My do tego celu nie możemy użyć spacji, natomiast znak podkreślenia jest dozwolony.
long zmiennaLong = 2_000_000_000;
No teraz od razu widać że jest to 2 miliardy. Natomiast jeśli zamienimy 2 miliadry na 3 miliardy – co jest za duże dla typu int, ale spokojnie wystarczające dla typu long – to jest problem. Dlaczego, skoro przypisujemy tą liczbę do typu long. Otóż typem domyślnym w liczbach całkowitych jest typ int. Wszystkie bezpośrednie wartości jak liczby czy znaki w Javie nazywają się literały. Warto poznać to pojęcie bo pewnie nie raz się z nim zetkniesz. No więc właśnie domyślnym literałem dla liczb jest typ int. Tak więc nie można nawet bezpośrednio wypisać takiej liczby. Nigdzie w kodzie nie możesz tak dużej liczby używać bezpośrednio. Aby zmienić typ literału na long trzeba na końcu liczby dopisać literkę L.
long zmiennaLong = 3_000_000_000L;
No i teraz nie ma błędu, przechodzi. Jest dozwolona zarówno mała jaki i duża litera L natomiast małe l jest zbyt podobne do 1, więc żeby było lepiej widoczne powinno się używać dużego L. Może błędu nie ma natomiast ineliJ podpowiada żeby zamienić małe l na duże.
Liczby zmiennoprzecinkowe
Podobnie liczby zmiennoprzecinkowe mają swój domyślny literał i jest nim double. Literały liczb zmiennoprzecinkowych używasz używając kropki a nie przecinka jakby mogła wskazywać nazwa. No i podobnie jak w przypadku longów dopisywałeś L to dla floatów musisz dopisywać na końcu F.
float zmiennaFloat = 12.34F;
double zmiennaDouble = 12.34;
Typ boolean
Jeszcze dla kompletu wypiszmu typ boolean którego przydatność zobaczycie już w kolejnej lekcji, natomiast tutaj możecie zobaczyć jak wygląda literał dla typu boolean. Są tylko 2. true oraz false.
boolean zmiennaBoolean1 = true;
boolean zmiennaBoolean2 = false;
Oraz ostatni typ prosty czyli char. Dla którego literały to po prostu jeden znak otoczony apostrofami.
char zmiennaChar = 'a';
Istnieją również specjalne litera dla typu złożonego string. I jest niem tekst otoczony cudzysłowami. Tego literału w tym kursie używaliśmy już w wielu miejscach. Tak więc wiedz że gdziekolwiek używałeś tekstu w cudzysłowach tam się kryje typ string.
String zmiennaString = "jakikolwiek tekst";
Prymitywny kalkulator
Aby lepiej przyswoić wiadomości z dzisiejszej lekcji a było ich mnóstwo, to zróbmy na koniec prymitywny kalkulator. Stwórzmy klasę PrymitywnyKalkulator i od razu funkcję main. Pomysł jest taki aby przyjmować 2 liczby całkowite a następnie wyświetlać ich sumę, różnicę, iloczyn oraz iloraz. W sumie to powinno Ci się już udać takie coś stworzyć. Spróbuj więc wykonać taki prymitywny kalkulator samodzielnie. Jeśli Ci się nie uda to też się nie przejmuj. Sama próba wykonania tego zadania korzystnie wpłynie na twój rozwój. W razie problemów możesz zobaczyć moje rozwiązanie w materiale video poniżej.
Podsumowanie
I to by było na tyle w dzisiejszej lekcji. I tak wyszła dłuższa niż przypuszczałem. Ty w ramach dodatkowego ćwiczenia możesz sobie zrobić taki sam kalkulator tylko dla liczb rzeczywistych. Wtedy nie będzie problemu z resztą z dzielenia, gdyż wynik również będzie liczbą rzeczywistą. I wystarczy pozamieniać int np. na double i ze scanera zamiast metody nextInt to trzeba użyć nextDouble.
Podsumuwująć niektóre ważniejsze informacje z dzisiejszej lekjci:
- Znak przypisania to nie jest to samo co równa się na matmie
- Nauczyliśmy się pobierać dane od użytkownika
- Poznaliśmy operatory na zmiennych
- Umiemy komentować kod.
- Poznaliśmy przypisania połączone z operatorami
- Wiemy co to jest inkrementacja i dekrementacja
- znamy literały liczbowe
- Wiemy też jakie są prirytety wykonywania operacji
Po kolejne informacje zapraszam do następnej lekcji.
public class OperacjeNaZmiennych {
public static void main(String[] args) {
System.out.println("Operacje na zmiennych");
//To jest komentarz jednolinijkowy
/* A to
jest
komentarz
wielolinijkowy
*/
//to jest deklaracja
int x; //To też komentarz
//to jest inicjalizacja
x=30;
System.out.println("x = " + x);
//x=31;
//System.out.println("x = " + x);
//deklaracje
int y;
int z;
//wielokrotna deklaracja
int x1, x2, x3;
//deklaracja z inicjalizacją
int zmienna = 4;
int y1, y2 = 10, y3;
y1 = y2;
x1 = x2 = x3 = 5;
int suma = 1 + 1;
System.out.println("suma = " + suma);
x = x + 10;
System.out.println("x = " + x);
//zmienna += 6;
//zmienna *= 3;
//zmienna /= 2;
//zmienna -= 1;
//zmienna %= 3;
//zmienna = zmienna + 1;
//zmienna += 1;
//inkrementacja
//zmienna++;
//dekrementacja
zmienna--;
System.out.println("zmienna = " + zmienna);
int i = 10;
int d = 10;
i++;
System.out.println("i = " + i);
System.out.println("i = " + i);
d--;
System.out.println("d = " + d);
System.out.println("d = " + d);
int wynik = (2 + 2) * 2;
System.out.println("wynik = " + wynik);
byte zmiennaByte = 127;
short zmiennaShort = 1234;
int zmiennaInt = 54321;
long zmiennaLong = 3_000_000_000L;
float zmiennaFloat = 12.34F;
double zmiennaDouble = 12.34;
boolean zmiennaBoolean1 = true;
boolean zmiennaBoolean2 = false;
char zmiennaChar = 'a';
String zmiennaString = "jakikolwiek tekst";
}
}
import java.util.Scanner;
public class KtoTy {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Jak masz na imię?");
String imie;
imie = s.nextLine();
System.out.println("Ile masz lat?");
int wiek;
wiek = s.nextInt();
System.out.println("Cześć " + imie + ". Wiem że masz " + wiek + " lat.");
}
}
import java.util.Scanner;
public class PrymitywnyKalkulator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Podaj pierwszą liczbę całkowitą");
int a = scanner.nextInt();
System.out.println("Podaj drugą liczbę całkowitą");
int b = scanner.nextInt();
int suma = a + b;
int roznica = a - b;
int iloczyn = a * b;
int iloraz = a / b;
int reszta = a % b;
System.out.println("Suma " + a + " + " + b + " = " + suma);
System.out.println("Różnica " + a + " - " + b + " = " + roznica);
System.out.println("Iloczyn " + a + " * " + b + " = " + iloczyn);
System.out.println("Iloraz " + a + " / " + b + " = " + iloraz + " reszty " + reszta);
}
}