MATERIAŁY POMOCNICZE DO ĆWICZENIA 1 Aplikacja w języku Java. Pakiety i biblioteki Javy. Kompilacja i wykonanie programu Javy

Podobne dokumenty
MATERIAŁY POMOCNICZE DO ĆWICZENIA 3 Klasy i obiekty; atrybuty i metody

Podstawy i języki programowania

Programowanie obiektowe

JDK można pobrać ze strony

Podstawy i języki programowania

Java jako język programowania

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe zastosowanie języka Java SE

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Wykład 2: Podstawy Języka

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Programowanie w Internecie. Java

Multimedia JAVA. Historia

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie obiektowe

Programowanie obiektowe

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

WPROWADZENIE DO JĘZYKA JAVA

Wykład 8: Obsługa Wyjątków

Wstęp do programowania. Wykład 1

Powtórka algorytmów. Wprowadzenie do języka Java.

Wykład 2 Składnia języka C# (cz. 1)

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Java EE produkcja oprogramowania

Podstawy programowania skrót z wykładów:

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Tworzenie aplikacji w języku Java

Wykład 4. Tablice. Pliki

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Powtórka algorytmów. Wprowadzenie do języka Java.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Programowanie obiektowe

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Rozdział 4 KLASY, OBIEKTY, METODY

WPROWADZENIE DO JĘZYKA JAVA

Strumienie, pliki. Sortowanie. Wyjątki.

Wprowadzenie do języka Java

Informatyka I. dr inż. Andrzej Czerepicki.

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Język JAVA podstawy. wykład 1, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Strumienie i serializacja

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Podstawy Programowania

Zmienne, stałe i operatory

1 Podstawy c++ w pigułce.

Ćwiczenie 1. Przygotowanie środowiska JAVA

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Wykład 4: Klasy i Metody

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Programowanie obiektowe

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Dokumentacja do API Javy.

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wykład 1: Wprowadzenie do technologii Java

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Podstawy języka Java. przygotował:

Programowanie 3 - Funkcje, pliki i klasy

Strumienie, pliki. Sortowanie. Wyjątki.

Platformy Programistyczne Podstawy języka Java

Spis treści. 1 Java T M

Odczyt danych z klawiatury Operatory w Javie

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

1. Wprowadzanie danych z klawiatury funkcja scanf

Aplikacje w środowisku Java

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

1 Atrybuty i metody klasowe

Język C++ Różnice między C a C++

Język JAVA podstawy. Wykład 3, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Definiowanie własnych klas

Lab 9 Podstawy Programowania

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

MATERIAŁY DO ZAJĘĆ II

Transkrypt:

MATERIAŁY POMOCNICZE DO ĆWICZENIA 1 Aplikacja w języku Java Aplikacja to program zdolny do samodzielnego działania w systemie wyposażonym w interpreter Javy Aplikacje mogą działać w trybie tekstowym (aplikacje konsolowe) albo w trybie graficznym (GUI) - Swing, AWT. Aplikacja języka Java składa się z jednej lub więcej klas. Źródłowy program Javy może być zapamiętany w jednym lub wielu plikach z rozszerzeniem "java". Klasa jest podstawową jednostką programu, kod programu zawarty jest wewnątrz definicji klas. Definicja klasy może zawierać deklaracje pól i metod, umieszczone wewnątrz nawiasów klamrowych po słowie kluczowym class oraz nazwie klasy, np. class Nazwa{ deklaracje pól i/lub metod Na podstawie definicji klasy mogą być tworzone obiekty o określonych zawartościach pól (zwanych właściwościami lub atrybutami), dysponujące zadeklarowanymi w klasie metodami. Pakiety i biblioteki Javy Środowisko programistyczne Javy obejmuje bogaty zestaw bibliotek klas, które mogą być użyte w programach. Klasy zawarte w bibliotekach Javy są organizowane w pakiety. Pakiety grupują hierarchie klas, zapobiegając kolizjom nazw. Hierarchia klas w pakietach odpowiada strukturze folderów zawierających pliki z ich kodem. Obok klas zdefiniowanych we własnym kodzie źródłowym, aplikacja ma dostęp do atrybutów i metod klas zdefiniowanych w standardowym pakiecie java.lang, a także w innych pakietach bibliotek klas Javy. Standardowy pakiet java.lang jest dostępny w każdym programie; są w nim zawarte podstawowe klasy Javy w tym wykorzystane w ćwiczeniu klasy System, String oraz Integer. Kompilacja i wykonanie programu Javy Pliki źródłowe są kompilowane za pomocą kompilatora Javy do postaci pośredniej - tzw. kodu bajtowego. W wyniku kompilacji klasy są umieszczane w oddzielnych plikach o nazwach zgodnych z nazwą klasy, z rozszerzeniem "class". Kompilator javac.exe wchodzi w skład JDK (Java Development Kit) bezpłatnego środowiska programistycznego Javy opracowanego przez firmę Sun. Najprostsze polecenie kompilacji programu zawartego w pliku Nazwa.java, z użyciem kompilatora javac.exe z poziomu wiersza poleceń, ma postać: javac Nazwa.java Program Javy jest wykonywany przez interpreter kodu bajtowego zwany JVM (Java Virtual Machine), dopasowany do danego systemu operacyjnego; dzięki temu można go wykonać na dowolnej platformie wyposażonej w JVM. Interpreter java.exe wchodzi w skład JRE (Java Runtime Environment) środowiska uruchamiania programów Javy, które może być używane samodzielnie lub jako podzbiór JDK. Najprostsze polecenie wykonania kodu bajtowego programu Javy zawartego w pliku zawartego w pliku Nazwa.class, z użyciem maszyny wirtualnej java.exe z poziomu wiersza poleceń, ma postać: java Nazwa Polecenie programu wykonania może opcjonalnie zawierać argumenty, podane w wierszu poleceń po jego nazwie w postaci rozdzielonych spacjami ciągów znaków tekstowych, np. java Nazwa alfa beta lub java Nazwa 12 5.3 Aplikacja Javy musi mieć publiczną klasę główną, której definicja zaczyna się od słowa public. Klasa główna musi zawierać standardową metodę o nazwie main(), która służy jako punkt startowy. Ciało metody main() zawiera kod rozpoczynający działanie programu, np. przez odwołania do innych klas aplikacji lub klas zawartych w bibliotekach Javy, tworzenie obiektów i wywołanie metod. Środowisko uruchomieniowe NetBeans Do edycji i uruchamiania programów w języku Java będziemy korzystać z NetBeans IDE 8.2 w wersji Development. Jest to zintegrowane środowisko programistyczne (Integrated Development Environment), które umożliwia opracowanie wielu różnych typów aplikacji - bazujących przede wszystkim na Javie, a także na innych współczesnych językach i technologiach programowania aplikacji sieciowych jak HTML, XML czy usługi webowe. Podstawowe elementy okna w środowisku IDE NetBeans 8. 2 Okno Netbeans IDE jest podzielone na szereg istotnych elementów; najważniejsze z nich pokazano na poniższym rysunku: Pasek menu Okno edytora kodu źródłowego Okno Projektów - wyświetla drzewo struktury budowanego projektu Okno Nawigatora wyświetlające hierarchię używanych w programie klas, pozwala na kontrolę poszczególnych klas i ich metod Okno konsoli (wyjścia standardowego - Output) służy do wyświetlania komunikatów IDE w fazie kompilacji i wykonania oraz wyników działania aplikacji Materiały do użytku wewnętrznego strona 1

Klasy i obiekty; atrybuty i metody Java jest językiem obiektowym. Wartości typów innych niż proste są obiektami określonych klas. Obiekty stanowią instancje klas, których definicje są dostępne w treści programu (w tym - importowane z innych pakietów). Nazwa klasy jest w tym przypadku nazwą typu obiektu. Definicja klasy określa atrybuty (pola) oraz metody (procedury, funkcje, konstruktory) obiektów tej klasy. Instancjeobiektów danej klasy są tworzone dynamicznie (w toku wykonania programu) przez konstruktory, tj. specjalne metody o nazwie zgodnej z nazwą tej klasy, wywoływane po słowie kluczowym new. Zmienna typu obiektowego stanowi referencję (odwołanie) do obiektu, czyli może wskazywać na miejsce w pamięci, gdzie jest przechowywany obiekt danej klasy). Deklaracja metody ma ogólną postać: typ_wyniku nazwa_metody( parametry) { instrukcje Nazwa metody zwracającej wynik (funkcji) jest poprzedzona nazwą typu zwracanej wartości, np.: double x1( ) Metoda może zwracać wartość dowolnego typu lub nie zwracać żadnej wartości, w tym przypadku jako typ_wyniku występuje słowo void. Jeśli metoda zwraca wynik, to w jej treści musi wystąpić instrukcja: return wartość ; Typ wartości w instrukcji return musi być zgodny z typem w deklaracji metody. Instrukcja return może też (lecz nie musi) wystąpić w metodzie typu void.w tym przypadku powoduje ona zakończenie wykonywania metody bez zwracania żadnej wartości i ma postać: return ; Treść metody, wewnątrz nawiasów {, może zawierać deklaracje zmiennych oraz instrukcje, zakończone średnikami Metody obiektowe odnoszą się do konkretnego obiektu danej klasy, o określonych wartościach atrybutów. W definicji klasy mogą także wystąpić metody statyczne (klasowe), których sygnatury poprzedza słowo kluczowe static. Wykonanie metody statycznej nie wymaga utworzenia instancji obiektu danej klasy, odwołania do tych metod następują przez nazwę klasy. Nagłówek standardowej metody main(); parametr w postaci tablicy argumentów W nagłówku (sygnaturze) nazwę metody main() poprzedzają trzy słowa kluczowe o niżej wyjaśnionym znaczeniu: public static void main(string[] args) public oznacza metodę publiczną, czyli dostępną dla innych klas i obiektów static oznacza statyczną metodę klasową, czyli dostępną za pośrednictwem nazwy klasy (bez potrzeby tworzenia instancji obiektu tej klasy) void oznacza metodę nie zwracającą wartości, a tylko wykonującą ciąg instrukcji zawarty w jej deklaracji Jeżeli wywołaniu programu towarzyszą argumenty, to są one przekazywane do metody main() przez tablicę klasy String[] o zwyczajowej nazwie args, której elementami są ciągi znaków tekstowych podane jako argumenty. Elementy tablicy args są numerowane od 0 do n-1, gdzie n określa liczbę argumentów przekazanych w poleceniu wykonania programu. Do elementu tablicy args odnosimy się podając jego numer w nawiasie kwadratowym, np. args[0] oznacza pierwszy argument. Dostęp do klas Klasy w Javie dzielimy na 3 typy: Publiczne Pakietowe Wewnetrzne Jeąli nie ma modyfikatora public, to klasa jest dostępna tylko dla innych klas tego samego pakietu. Deklaracja klasy pakietowej ma postac: class nazwa_klasy{ Pola i metody klasy Deklaracja klasy publicznej ma postać: public class nazwa_klasy{ Pola i metody klasy Materiały do użytku wewnętrznego strona 2

Importowanie klas z innych pakietów Javy Klasy Javy są zorganizowane w pakiety. Nazwa pakietu podana jest na początku treści pliku definiującego klasę Javy, np. package projekt2; Klasy zawarte w tym samym pakiecie mogą się do siebie wzajemnie odwoływać. Pozostałe klasy, zdefiniowane w bibliotekach Javy (a w ogólności, w pakietach innych niż ten, z którego następuje odwołanie) muszą być importowane. Klauzule importu muszą poprzedzać definicję klasy, która się do nich odwołuje, np.: import java.io.bufferedreader; Wyjątkiem jest pakiet java.lang, którego zawartość na przykład klasa System jest standardowo dostępna dla wszystkich programów Javy. Klasa System zawiera m.in. deklaracje pól statycznych in oraz out reprezentujących standardowe wejście i wyjście z programu. Zmienna out jest obiektem klasy PrintStream (strumień wydruku) i posiada szereg metod drukowania (bądź wyświetlania na ekranie, zależnie od technicznej realizacji wyjścia standardowego). Jedną z nich jest metoda System.out.println() użyta w programie do wyświetlania wiersza tekstu podanego jako parametr. Typy proste Obok klas obiektów, w Javie występują typy proste dla wartości liczbowych, znakowych i logicznych. Poniżej zestawiono wybrane typy proste, które wykorzystujemy w ćwiczeniach. Nazwa typu Liczba bajtów Znaczenie-typy proste Dopuszczalne wartości int 4 Liczby całkowite -2147483648.. 2147483647 double 8 Liczby rzeczywiste -1,8e308..1,8e308 float 4 Liczby rzeczywiste -3,4e38..3,4e38 boolean 1 Wartości logiczne: true lub false Typom prostym odpowiadają uzupełniające je klasy (typy obiektowe), które definiują szereg właściwości i metod związanych z operacjami na odpowiednich wartościach. Jednym z prostych typów całkowitych jest typ int. Odpowiadająca mu klasa Integer definiuje m.in. metodę o nazwie parseint(, która konwertuje łańcuch znaków (ciąg cyfr ew. poprzedzony znakiem - ) podany jako parametr na wartość typu int. Jednym z przykładów użycia tej metody jest następująca instrukcja: m = Integer.parseInt(args[i]); Deklaracje zmiennych Zmienne są deklarowane przez podanie ich typu (klasy) oraz nazwy, np. String s; lub int i; Deklaracja zmiennej może być połączona z przypisaniem jej wartości początkowej, np String s = "!!!"; int k = 2; Klasa String, stałe i zmienne tekstowe, konkatenacja i automatyczna konwersja tekstów Teksty czyli łańcuchy znaków są reprezentowane w Javie przez obiekty klasy String Stałe łańcuchy znaków występujące w programie, pisane w cudzysłowie, są przekształcane na obiekty klasy String Obiekty klasy String mogą być łączone przez operator konkatenacji +, np. "Witaj w Javie" + s Jeżeli co najmniej jeden ze składników łączonych znakami + jest obiektem klasy String, znaki + są traktowane jako operatory konkatenacji. Wówczas następuje automatyczna konwersja składników o wartościach liczbowych na łańcuchy znaków, np. w wyrażeniu (i+1)+": "+args[i] liczbowa wartość wyrażenia (i+1) będzie przekształcona na odpowiedni ciąg cyfr. Konwersja tekstu na liczby rzeczywiste Do przekształcania tekstów w liczby rzeczywiste stosuje się statyczną metodę parsedouble()klasy Double, np: String t = "125.5"; double a = Double.parseDouble(t); Przy przekształcaniu tekstu w liczbę może pojawić się błąd i metoda tworzy wtedy wyjątek klasy NumberFormatException, dlatego należy ją wywoływać w bloku try... catch Konwersja liczb na łańcuchy String Do konwersji liczb na typ String służy metoda tostring(), zdefiniowana we wszystkich klasach reprezentujących liczby. Jest ona wywoływana automatycznie, jeśli w wyrażeniu zamienianym na łańcuch występują składniki typu String połączone operatorem + ze składnikami o wartościach liczbowych Metoda ta może być wywołana jawnie, na przykład poniższe instrukcje spowodują zamianę na łańcuchy zmiennej n typu int oraz zmiennej a typu double: String s1 = Integer.toString(n); String s2 = Double.toString(a); Ten sam efekt daje zastosowanie metody valueof klasy String. Parametr tej metody może być typu prostego reprezentującego liczby: String s1 = String.valueOf(n); String s2 = String.valueOf(a); Materiały do użytku wewnętrznego strona 3

Formatowanie liczb dziesiętnych Do formatowania tekstowej reprezentacji liczb w Javie można wykorzystać klasę NumberFormat zawierającą wzorce i metody formatowania wartości liczbowych, walutowych i dat. Dla liczb rzeczywistych można określić ilość miejsc dziesiętnych za pomocą obiektu klasy DecimalFormat i metody format(). Parametrem konstruktora klasy DecimalFormat może być wzorzec zawierający symbole, które opisują format tekstowego zapisu liczby dziesiętnej. Są to między innymi: 0 cyfra # - cyfra z pominięciem nieznaczących zer. separator dziesiętny Aby sformatować wartość zmiennej rzeczywistej wynik z trzema cyframi dziesiętnymi można zastosować instrukcje: NumberFormat f = new DecimalFormat( 0.### ); jtextfield3.settext(f.format(wynik)); Wczytywanie danych z klawiatury W Javie operacje we/wy opierają się na strumieniach, czyli obiektach, z których można odczytywać dane (strumienie wejściowe) lub zapisywać do nich dane (strumienie wyjściowe). W pakiecie java.lang są zdefiniowane standardowe strumienie: System.in (zazwyczaj wejście z klawiatury) oraz System.out (zazwyczaj wyjście na monitor ekranowy). Aby odczytać dane z klawiatury należy: Utworzyć obiekt klasy InputStreamReader, czyli czytnik strumienia wejściowego powiązany ze standardowym strumieniem wejściowym przez parametr konstruktora: new InputStreamReader(System.in) Utworzyć obiekt klasy BufferedReader (czytnik buforowany), powiązany z czytnikiem strumienia wejściowego przez parametr konstruktora: new BufferedReader(new InputStreamReader(System.in)) Zadeklarować zmienną obiektową klasy BufferedReader i przypisać do niej nowo utworzony obiekt tej klasy: BufferedReader we = new BufferedReader(new InputStreamReader(System.in)); Wykorzystać metodę readline() obiektu we klasy BufferedReader, która zwraca jedną linię tekstu odczytanego przez czytnik InputStreamReader ze strumienia wejściowego (tu System.in, czyli z klawiatury): line = we.readline(); Obiekt klasy BufferedReader buforuje strumień bajtów przekazywany przez obiekt klasy InputStreamReader, pozwalając na odczytanie od razu całych wierszy tekstu (metodą readline()) zamiast czytać znak po znaku. Klasa Scanner Klasa Scanner udostępnia metody czytania danych tekstowych, zapisanych w postaci sekwencji liczb całkowitych i rzeczywistych, wartości logicznych, łańcuchów itp, czyli tzw. tokenów, rozdzielonych separatorami. Domyślnie separatorem jest znak white space, może nim być np. spacja, znak tabulacji, znak nowej linii itp. Kolejna dana z sekwencji, traktowana jako łańcuch, może być pobrana za pomocą metody next(), po sprawdzeniu za pomocą metody hasnext(), że taka dana istnieje. Podobne metody mogą sprawdzać i dostarczać dane konkretnego typu, na przykład do przeczytania danej całkowitej można wykorzystać metody nextint() i hasnextint(). Konstruktorami klasy Scanner są m.in.: Scanner(File f) throws FileNotFoundException - tworzy nowy skaner przetwarzający dane z pliku f metoda generuje wyjątek FileNotFoundException gdy plik nie istnieje Scanner(String s) - konstruktor klasy, tworzy nowy skaner przetwarzający dane z łańcucha s Podstawowymi metodami klasy są: close() zamyka skaner usedelimiter(string d) ustawia nowy separator danych next() zwraca kolejny token w postaci łańcucha (String) hasnext() zwraca true jeśli istnieje kolejna dana, w przeciwnym przypadku zwraca false nextint(), nextdouble(), nextboolean() każda z tych metod zwraca kolejny token jako wartość odpowiedniego typu int, double, boolean, hasnextint(), hasnextdouble(), hasnextboolean() zwraca true jeśli istnieje kolejna dana odpowiedniego typu, w przeciwnym przypadku zwraca false Zapis danych do pliku, klasa FileWriter Metody klasy FileWriter umożliwiają zapisanie danych do pliku tekstowego. Najprostszy konstruktor ma postać: FileWriter(String nazwa) tworzy obiekt odpowiadający plikowi o podanej nazwie Możliwe jest dopisywanie danych do istniejącego pliku za pomocą konstruktora: Materiały do użytku wewnętrznego strona 4

FileWriter(String nazwa, boolean append) tworzy nowy obiekt odpowiadający plikowi o podanej nazwie; jeśli plik już istnieje i parametr append ma wartość true, to dane będą dopisywane na końcu pliku Metody wykorzystane do zapisu danych w pliku: write(string s) zapisuje łańcuch s w strumieniu wyjściowym close() zamyka strumień Wszystkie metody klasy FileWriter mogą generować wyjątki klasy IOException, muszą więc być wywoływane w bloku try catch, w którym zostanie przechwycony wyjątek. Aby odpowiednio zmienić rozmieszczenie znaków w tekstach zapisywanych do pliku, można wykorzystać sekwencje znaków specjalnych, które umożliwiają wstawienie znaku nowej linii, nowej strony, tabulacji itp. W programie wykorzystaliśmy sekwencję \r\n reprezentującą powrót karetki i znak nowego wiersza. Znaki specjalne W typie char oprócz znaków ASCII (np a ) występują znaki specjalne, zbudowane jako sekwencja znaków tzw. escape sequence, rozpoczynająca się od znaku \ (backslash). Sekwencja \t Znak tabulacji \n Znak nowej linii \r Powrót karetki \f Znak nowej strony \b Cofnięcie o jeden znak Znaczenie \' Apostrof \" Cudzysłów \\ Lewy ukośnik \udddd znak Unicode o podanym kodzie (d cyfra szesnastkowa) Znaków specjalnych można używać w literałach łańcuchowych. Literałem łańcuchowym jest ciąg znaków zapisany bezpośrednio w programie, w cudzysłowach w jednym wierszu. Na przykład w ćwiczeniu wykorzystaliśmy znak specjalny (Unicode) aby wyświetlić symbol drugiej potęgi x 2 " x\u00b2" UNICODE jest standardem kodowania znaków na dwu bajtach, pozwalającym na zdefiniowanie 65536 znaków. Dla kodowania w standardzie ASCII (kodowanie na jednym bajcie) mamy do dyspozycji jedynie 256 znaków W poniższej tabeli zestawiono znaki Unicode kodujące polskie litery: Litera Kod Unicode Litera Kod Unicode Ą 0104 Ó 00D3 ą 0105 ó 00F3 Ć 0106 Ś 015A ć 0107 ś 015B Ę 0118 Ź 0179 ę 0119 ź 017A Ł 0141 Ż 017B ł 0142 ż 017C Przykład: public void paint(graphics g) { g.drawstring("dzi\u0119kuj\u0119 ",10,10); Powyższa metoda paint() drukuje słowo Dziękuję. Materiały do użytku wewnętrznego strona 5

Wyjątki w programach Javy; instrukcja try-catch ; programowe generowanie wyjątków Zdarzenia powodujące błędne działanie programu nazywane są wyjątkami (ang. exceptions). Wyjątki są reprezentowane w języku Java przez obiekty specjalnie w tym celu zdefiniowanych klas. Metody klas Javy, w których wykonaniu mogą wystąpić błędy czyli wyjątki, powinny obsługiwać je w swojej treści lub wyrzucać je na zewnątrz (ang. throw); wówczas za obsługę błędu jest odpowiedzialna metoda wywołująca. Do obsługi wyjątków służy instrukcja try w połączeniu z jedną lub kilkoma częściami catch i/lub jedną częścią finally. Słowem kluczowym try rozpoczynamy blok kodu, który może zgłaszać wyjątki. Jeśli wewnątrz tego bloku pojawi się wyjątek jest on wyrzucany (ang. thrown). Słowo kluczowe catch (złap) używane jest do przechwytywania wyjątków. Najbardziej ogólna postać bloku try...catch jest następująca: try {//blok kodu, który może spowodować wyjątek catch (Klasa_wyjątku nazwa_wyjątku) { //instrukcje obsługi wyjątku finally{//instrukcje Uwaga: Istotna jest kolejność części catch: jeśli któraś z nich przechwyci wyjątek, następne catch nie będą wykonane. Przykładami klas wyjątku są: Instrukcje zawarte w części catch są wykonywane przypadku pojawienia się wyjątku odpowiedniej klasy; instrukcje zawarte w opcjonalnej (nieobowiązkowej) części finally są zawsze wykonywane na zakończenie instrukcji try-catch. Exception błąd typu ogólnego (przechwytuje wszystkie błędy) ArrayIndexOutOfBoundsException - błąd przekroczenia zakresu tablicy NumberFormatException błąd formatu liczbowego (występujący w ćwiczeniu). IOException - błąd wejścia/wyjścia Aby uzyskać informację o wyjątku, można wykorzystać jedną z metod klasy Exception: getmessage () - podaje komunikat związany z wyjątkiem, tostring() - podaje komunikat związany z wyjątkiem i dodatkowo nazwę klasy wyjątku. Możliwe jest programowe generowanie wyjątków za pomocą instrukcji throw. W programie zastosowaliśmy instrukcję: if (a == 0) { throw new Exception("To nie jest równanie kwadratowe!"); Utworzyliśmy tu obiekt klasy Exception i zgłosiliśmy wystąpienie wyjątku. Parametr konstruktora jest typu String i określa komunikat związany z tym wyjątkiem. Komunikat ten został następnie uzyskany za pomocą metody getmessage() i wykorzystany w instrukcji obsługującej wyjątek. Operator trójargumentowy? : Operator warunkowy trójargumentowy ma postać: warunek? wyrażenie1 : wyrażenie2 Jeśli warunek ma wartość true, obliczane jest wyrażenie1, w przeciwnym przypadku obliczane jest wyrażenie2. W naszym programie wykorzystaliśmy ten operator do dopisania składnika równania: String s = a + " x\u00b2"; s += (b!= 0? " + " + b + " x" : ""); Wyświetlanie komunikatów metody klasy JOptionPane Komunikaty można wyświetlić na ekranie w oknie MessageDialog. Okno to tworzymy poprzez wywołanie jednej z metod klasy JOptionPane: showmessagedialog(component, Object); showmessagedialog(component, Object, String, int); gdzie poszczególne parametry mają następujące znaczenie: Component jest komponentem nadrzędnym dla wyświetlanego okna komunikatu, Object jest łańcuchem tekstowym, komponentem albo ikoną wyświetlaną w powstałym oknie String jest łańcuchem tekstowym wyświetlanym w pasku tytułowym okna int jest jedną z pięciu zmiennych określającą rodzaj okna : ERROR_MESSAGE, INFORMATION_MESSAGE, PLAIN_MESSAGE, QUESTIONMESSAGE, WARNING_MESSAGE Przykład: JOptionPane.showMessageDialog(this, e.getmessage(), "Błędny format danych", 0); Materiały do użytku wewnętrznego strona 6