Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: [email protected]PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW INFORMACJE O NOWOCIACH ZAMÓW CENNIK ZAMÓW CENNI K CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TRECI SPIS TRECI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE Po prostu Java 2 Autor: Dori Smith T³umaczenie: Miko³aj Szczepaniak ISBN: 83-7197-686-0 Tytu³ orygina³u: Java 2 for the World Wide Web VQG Format: B5, stron: 356 Java jest jednym z najpopularniejszych jêzyków programowania na wiecie wykorzystywanym przy tworzeniu popularnych aplikacji. Jêzyk ten dla pocz¹tkuj¹cych programistów jest czêsto pierwszym poznanym jêzykiem programowania. Dziêki przemylanej architekturze obiektowej Javy ³atwiej Ci bêdzie nabraæ prawid³owych nawyków programistycznych, z kolei funkcjonalnoæ tego jêzyka sprawi, ¿e nauka nie pójdzie na marne, a zdobyt¹ wiedzê wykorzystasz w praktyce. W Javie mo¿na bowiem napisaæ prawie ka¿d¹ aplikacjê, od prostej gry dzia³aj¹cej w telefonie komórkowym, po skomplikowany system uruchamiany na potê¿nym serwerze. „Po prostu Java 2” to ksi¹¿ka, dziêki której nauczysz siê pisaæ programy w tym jêzyku, nawet jeli programowanie by³o Ci do tej pory zupe³nie obce. Ksi¹¿ka jest pozbawiona zbêdnego balastu teorii. Prezentuje ona wiele zastosowañ Javy. Dziêki ksi¹¿ce nauczysz siê: • Sk³adni Javy oraz podstawowych instrukcji • Korzystaæ z obiektów i rozpoznawaæ ich metody • Tworzyæ interfejs u¿ytkownika dla aplikacji Javy • Pisaæ aplety i osadzaæ je w stronach WWW • £¹czyæ Javê z JavaScript • Pisaæ servlety i strony JSP • Korzystaæ z XML z poziomu Javy Chcesz szybko i bez zbêdnych dywagacji dowiedzieæ siê, dlaczego Java cieszy siê takim powodzeniem? Chcesz wykorzystaæ j¹ do swoich potrzeb? Ta ksi¹¿ka z pewnoci¹ Ci w tym pomo¿e.
Java jest jednym z najpopularniejszych języków programowania na świecie wykorzystywanym przy tworzeniu popularnych aplikacji. Język ten dla początkujących programistów jest często pierwszym poznanym językiem programowania. Dzięki przemyślanej architekturze obiektowej Javy łatwiej Ci będzie nabrać prawidłowych nawyków programistycznych, z kolei funkcjonalność tego języka sprawi, że nauka nie pójdzie na marne, a zdobytą wiedzę wykorzystasz w praktyce. W Javie można bowiem napisać prawie każdą aplikację, od prostej gry działającej w telefonie komórkowym, po skomplikowany system uruchamiany na potężnym serwerze.
"Po prostu Java 2" to książka, dzięki której nauczysz się pisać programy w tym języku, nawet jeśli programowanie było Ci do tej pory zupełnie obce. Książka jest pozbawiona zbędnego balastu teorii. Prezentuje ona wiele zastosowań Javy.
Dzięki książce nauczysz się:
* Składni Javy oraz podstawowych instrukcji * Korzystać z obiektów i rozpoznawać ich metody * Tworzyć interfejs użytkownika dla aplikacji Javy * Pisać aplety i osadzać je w stronach WWW * Łączyć Javę z JavaScript * Pisać servlety i strony JSP * Korzystać z XML z poziomu Javy
Chcesz szybko i bez zbędnych dywagacji dowiedzieć się, dlaczego Java cieszy się takim powodzeniem? Chcesz wykorzystać ją do swoich potrzeb? Ta książka z pewnością Ci w tym pomoże.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Pakiet java.util.jar (wprowadzony w JDK 1.2) ....................................... 337
Pakiet java.util.zip (wprowadzony w JDK 1.1) ...................................... 338
Dodatek D Różnice pomiędzy JDK 1.0, 1.1, 1.2 i 1.3 339
„Stary” model zdarzeń ............................................................................ 340
Skorowidz 347
Podejmowanie decyzji
85
Podejmowanie decyzjiNie zawsze aplety Javy przechodzą najprostsządrogę od pierwszej do ostatniej instrukcji.Niekiedy potrzebne jest ominięcie fragmentukodu, czy też powtórne uruchomienie pewnychinstrukcji. Wpływanie na przebieg działaniaprogramu nazywa się sterowaniem przepływem(ang. flow control). W tym rozdziale omówimy,jak zapanować nad kierunkiem przetwarzaniaTwojego kodu.
Podejmowanie decyzji
Podejm
ow
anie
decy
zji
Rozdział 6.
86
Instrukcje warunkowe — if
Najprostszym sposobem przejęcie kontrolinad działaniem apletu jest użycie instrukcji ��.Działanie tej instrukcji można wyrazić słowami:„Jeśli (��) jakaś wartość jest prawdziwa (����),wówczas uruchom instrukcje znajdujące sięw nawiasach klamrowych. W przeciwnymwypadku pomiń ten fragment kodu”. ListingHTML 6.1 i aplet 6.1 pokazują, jak używaćinstrukcji warunkowych w celu wyświetleniawpisanego przez użytkownika tekstu.
Aby skorzystać z instrukcji if,należy wpisać:
1. ������� ������� ������
Na początku musimy obsłużyć zdarzeniagenerowane przez użytkownika. Koniecznedo tego będą klasy z pakietu �� ������� ���,które w tym kroku importujemy.
Nasza nowa klasa (nazwana �������) zostałazdefiniowana jako rozszerzenia standardowejklasy ������. Nowością w tej definicji jestsłowo kluczowe �����������������������.Oznacza to, że nasz aplet będzie zdolnydo obsługi zdarzeń generowanych przezużytkownika i będzie przez cały czas swojegodziałania oczekiwał na jego konkretneczynności. Tabela 6.1 przedstawia metodysłużące do przechwytywania interakcjiz użytkownikiem dla poszczególnychelementów.
Oto, jak tworzymy nowe zmienne:pole tekstowe �������, przeznaczonedo wpisywania znaków przez użytkownika,zmienną czcionki �, którą ustawiamyna rozmiar 24-punktowy i pogrubiony krójTimes Roman, oraz łańcuch ������,��-��,który będzie zawierał tekst wpisany przezużytkownika i wypisywany później na ekranie(na początku ustawiamy łańcuch jako pusty).
� Jeśli programowałeś wcześniej w innychjęzykach, możesz sądzić, że koniecznejest użycie instrukcji �.�� po instrukcji ��.W Javie nie używa się tej instrukcji.
� Bardzo często w programach Javy możnaspotkać instrukcję �� poprzedzającąpojedynczą, wciętą instrukcjęnie umieszczoną w nawiasachklamrowych. Taka poprawna składniaoznacza, że instrukcja warunkowa ��dotyczy tylko jednej, następującej po niejinstrukcji. Dla zachowania przejrzystościkodu, w książce tej zawsze będziemynastępujące po �� instrukcje umieszczaćw nawiasach klamrowych.
4. ������������������������ �.��"���� �������"�
Teraz wstawiamy dwie nowe instrukcjemetodzie ���� ". Pierwsza określa, żechcemy użyć interfejsu �������������(omówionego w kroku 2.), by przechwytywaćdziałania użytkownika w polu tekstowym�������. Dzięki temu, za każdym razem,kiedy użytkownika cokolwiek wpiszew tym polu, wyzwolone będzieodpowiednie zdarzenie w Javie (ang. event).
Druga linia spowoduje wyświetlenie polatekstowego w obszarze apletu.
Wtedy, i tylko wtedy, gdy łańcuch������,��-�� zawiera jakikolwiek znak(długość łańcucha jest większa od zera),wyświetlamy tekst wpisany przezużytkownika. Jeśli łańcuch jest pusty,instrukcja +�����*����+ " nie zostaniewykonana.
Ponieważ dodaliśmy wcześniej������������� do pola tekstowego�������, metoda �����8������� "będzie obsługiwać wszystkie zdarzeniawywołane przez użytkownika. Jedynymmożliwym zdarzeniem w tym aplecie jestwpisanie tekstu w jedynym polu tekstowym.Kiedy to się stanie, przypisujemy zmiennejłańcuchowej ������,��-�� dane z tego pola.Następnie wywołujemy metodę ������� ",która odświeża obszar apletu (efektmożemy zobaczyć na rysunku 6.1).
Kiedy umożliwiasz użytkownikowi interakcjęz Twoim apletem, może się zdarzyć, że dane,które poda, nie będą pasowały do założeńTwojego programu. Listing HTML 6.2 i aplet6.2 pokazują, jak przechwycić potencjalnebłędy, zanim spowodują poważne problemyw działaniu apletu.
Powyżej definiujemy zmienną���:+��,����� typu ��������� (poletekstowe o długości 5). Wykorzystamyto pole do pobierania od użytkownikazgadywanej liczby. Zmienna ��������8���posłuży nam do przechowywania wpisywanejprzez użytkownika liczby — przypisujemyjej wartość początkową <�. Wartość jest napewno niepoprawna (szukana liczba należydo przedziału od 1 do 100), zatem używamy<�, by program „wiedział”, że użytkowniknie podał jeszcze żadnej wartości.
Metoda Javy �� �����+�>��.������ "generuje rzeczywistą liczbę losowąz przedziału od 0 do 1 (np. 0,722 lub 0,111).Mnożymy tę wartość przez 100 (mamy więc72,2 lub 11,1). Na końcu przekształcamytę wartość na liczbę całkowitą (rzutujemyna typ ���), co powoduje obcięcie częścidziesiętnej naszej liczby (otrzymujemyzatem liczbę od 0 do 99). Po dodaniu 1mamy wynik od 1 do 100 i przypisujemytaką właśnie wartość zmiennej �=�-������=��.Zarówno zmienna ��������8���,jak i �=�-������=�� są typu ���.
Wewnątrz metody ����� " zdefiniowaliśmynową zmienną łańcuchową: ���������=�,.Przypisujemy jej wartość zmiennej��������8��� z dołączonym komunikatemo udanej próbie odgadnięcia liczby(patrz rysunek 6.2). W drugiej instrukcjiustawiamy czcionkę dla naszego apletu(za pomocą zmiennej �).
Oto nasza pierwsza instrukcja ��.Sprawdzamy w niej, czy liczba będącawartością zmiennej ��������8��� różni sięod wylosowanej wcześniej wartości�=�-������=��; sprawdzamy zatem,czy podana przez użytkownika liczba różnisię od wartości, którą próbuje odgadnąć.Jeśli wynikiem porównania będzie ����(użytkownikowi nie udało się odgadnąćnaszej liczby), zostanie uruchomionykod znajdujący się wewnątrz nawiasówklamrowych. W przeciwnym wypadku,ten fragment programu zostanie pominięty.Jeśli użytkownik nie odgadł wylosowanejliczby, ponownie ustawiamy zmienną���������=�,, tym razem z komunikatemo nieudanej próbie (patrz rysunek 6.3).
Oto kolejna instrukcja warunkowa ��.Tym razem sprawdzamy, czy wartośćzmiennej ��������8��� jest mniejsza od 1,co oznacza, że podana wartość jest spozanaszego przedziału. W takim przypadkuprzypominamy użytkownikowi, jakiejliczby od niego oczekujemy (widać tona rysunku 6.4).
6. +�����*����+ ���������=�,%!5%65"�
Za pomocą tej instrukcji wyświetlamy to,co wcześniej przypisaliśmy wartości���������=�, (odpowiedni komunikato trafieniu, chybieniu, bądź o podaniuliczby spoza przedziału).
Oto metoda �����8������� "wyzwalana zdarzeniem generowanymprzez użytkownika. Ten fragment kodujest uruchamiany za każdym razem,gdy użytkownik wpisuje cokolwiekw polu tekstowym. Na początku metody�����8������� " sprawdzamy,czy zdarzenie, które chcemy obsłużyć,rzeczywiście dotyczy pola tekstowego.Sprawdzamy zatem za pomocą instrukcjiwarunkowej ��, czy źródłem zdarzeniajest obiekt pola tekstowego (egzemplarzklasy ���������).
Instrukcja ��, jest specyficznym rodzajeminstrukcji warunkowej. W tym przypadkupróbujemy wykonać instrukcję, która możespowodować błąd. Umieszczamy ją wewnątrzbloku ��,D����.. Jeśli jej działanie będziepoprawne (nie spowoduje błędu), nie będzieto miało znaczenia. W przeciwnym wypadkuspowoduje wyjątek, który należy przechwycići obsłużyć (za pomocą instrukcji ����.).W tym przypadku próbujemy przekształcićwpisany przez użytkownika tekst na liczbę.Ponieważ w polu tekstowym użytkownikmoże wpisać dowolny ciąg znaków, takieprzekształcenie może się nie udać i stądkonieczność użycia bloku ��,D����..Jeśli podany łańcuch ma poprawny formatliczbowy, przypisujemy wartość otrzymanejliczby zmiennej ��������8���.W przeciwnym razie jest wyzwalanywyjątek C����������9������� (błędnyformat liczby), wówczas przypisujemyzmiennej ��������8��� wartość <�.Niezależnie od rezultatu przekształceniawywołujemy metodę ������� ",która przerysuje obszar apletu.
Wskazówka
� Powyższy przykład nie prezentujenajlepszego pomysłu na tego typu grę.Średnio użytkownik musi 50 razyspróbować szczęścia, zanim odgadniewylosowaną liczbę. W następnymprzykładzie zaprezentujemy dużociekawsze rozwiązanie.
Java odrzuca nasze polecenia
Wyjątki w Javie można wyrazićprzesłaniem od programu mówiącym„zrób to inaczej”. Źródłem wyjątków sąnieprzewidziane i niechcianezdarzenia. Przykładowo, Java niebędzie w stanie zamienić liter na liczbę.
Kiedy Java wyzwala wyjątek, Ty,programista, musisz go przechwycić.Zrobisz to za pomocą słowakluczowego ����., po którym określisz,co program Javy ma zrobić w raziewystąpienia potencjalnych wyjątków.
Prz
ech
wyty
wanie
błę
dów
Podejmowanie decyzji
93
Więcej o instrukcjachwarunkowych — if…else
Niekiedy niezbędne jest jedynie wyrażenietego, co ma się stać, jeśli dane wyrażenie jestprawdziwe. Czasem jednak będziesz chciałwyznaczyć instrukcje, które powinny byćprzetworzone, gdy warunek instrukcji �� niejest spełniony. Służy do tego instrukcja ����wskazująca na blok kodu uruchamiany tylkowtedy, gdy warunek instrukcji warunkowej��nie jest spełniony. Listing HTML 6.3 i aplet6.3 prezentują poprawiony aplet gry „zgadnij,jaką sobie wymyśliłem liczbę”, który prezentujeużytkownikowi kierunek, w którym powinienpodążać.
Aby korzystać z konstrukcji if…else,należy zastosować:
1. �� ��������8���/��=�-������=��"�
Zaczynamy od sprawdzenia, czy podanaprzez użytkownika liczba różni się odwylosowanej. Fragment kodu poprzedzonytą instrukcją warunkową zostanie wykonanytylko w przypadku niezgodności liczbyużytkownika z wylosowaną przez aplet.
Teraz sprawdzamy, czy zmienna��������8��� ma wartość <�, cooznaczałoby, że metoda ����� " działapo raz pierwszy lub że użytkownikwpisał ciąg znaków, którego nie możnaprzekształcić na liczbę. Jeśli warunekjest spełniony, wyświetlamy komunikat„Odgadnij liczbę od 1 do 100”.
W przeciwnym wypadku, jeśli wartośćzmiennej ��������8��� jest różna odwartości zmiennej �=�-������=�� oraz��������8��� jest poprawną liczbą,uruchamiamy fragment kodu poprzedzonysłowem ����. W tym przypadku fragmentskłada się z kolejnego bloku ��D����.
Teraz sprawdzamy, czy wartość zmiennej��������8��� jest mniejsza od wartościprzechowywanej w zmiennej �=�-������=��.Jeśli tak, zmienna ��������8��� będziewyświetlona z komunikatem, że podanaliczba jest za mała. W przeciwnym raziezakomunikujemy użytkownikowi, że jestza duża. Na rysunku 6.5 prezentujemywygląd apletu, gdy podana liczba jestza duża, rysunki 6.6 i 6.7 prezentują efektdla zbyt małej liczby. Jeśli w końcu podamyliczbę równą szukanej, zobaczymykomunikat widoczny na rysunku 6.8.
� W poprzednim przypadku użytkownikmusiał próbować 50 razy, by osiągnąć 50%szans na sukces. W tym przypadku mamytaką samą możliwość odgadnięcia liczbypo najwyżej siedmiu próbach.
Wię
cej o
instru
kcja
ch w
aru
nkow
ych
Rozdział 6.
96
Powtarzanie czynnościza pomocą pętli
Struktura ��D����, którą posługiwaliśmy sięw poprzednim przykładzie, pozwalała uruchamiaćalbo jeden, albo drugi blok kodu. W przyszłościczęsto możesz stawać przed koniecznością wpisaniajednej lub wielu instrukcji, które powinny byćuruchomione wielokrotnie. Rozwiązaniem, którepozwala to zrealizować, jest pętla. Listing HTML6.4 i aplet 6.4 demonstrują jeden z rodzajów pętli:��. W poniższym przykładzie umożliwimyużytkownikowi wpisanie liczby, na podstawiektórej wyświetlimy rząd gwiazdek w oknieprzeglądarki.
Zapętlenie kodu
Pętla �� składa się z trzech części (patrzrysunek 6.10):
2. Ograniczenie — tak określamy, kiedypętla się zakończy. W normalnychwarunkach ludzie odliczają od jednegodo dziesięciu; powszechną praktykąw językach programowania jestodliczanie od zera do dziewięciu.W obu przypadkach kod wewnątrzpętli zostanie przetworzony dziesięćrazy, jednak metoda liczenia odzera jest wygodniejsza w językachprogramowania takich jak Java z racjiindeksowania tablic od zera. Dlategowłaśnie określamy ograniczeniaw pętli jako „mniejszy niż wartość���=��F=,�-���-�”, a nie „mniejszylub równy wartości ���=��F=,�-���-�”.
3. Inkrementacja — w tej częściokreślamy, jak dalece zwiększaćlicznik pętli w każdej kolejnej iteracjipętli. W tym przypadku dodajemyjeden za pomocą znaków 44po identyfikatorze zmiennej.
Jeśli liczba jest prawidłowa (nie spełnionywarunek instrukcji �� z poprzedniego kroku),przechodzimy do pętli ��. Pierwsza częśćinicjalizuje licznik pętli � wartością 5.W drugiej części określamy, że pętla będziedziałać tak długo, aż � będzie mniejszeod wartości podanej przez użytkownika.Trzeci element określa operację wykonywanąprzy każdej iteracji pętli, w tym przypadkulicznik pętli będzie zwiększany o �.Na rysunku 6.9 widać efekt działaniaapletu po tym, jak użytkownik wpisał „29”.Do zmiennej ������.0,�����, (początkowojest pustym łańcuchem) dodajemy gwiazdkęprzy każdym nawrocie pętli.
Wskazówka
� Znaki GG pomiędzy warunkamisprawdzającymi, czy ���=��F=,�-���-�jest mniejsza od 1 i większa niż 50oznaczają logiczną alternatywę (czyli „lub”).Mówi to, że cały warunek �� jest prawdziwy,jeśli choć jeden z warunków składowych(rozdzielonych GG) jest prawdziwy.Gdybyśmy chcieli, by koniecznabyła prawdziwość oby warunków,rozdzielilibyśmy je znakami IIoznaczającymi koniunkcję (czyli „i”).
W Javie istnieją trzy sposoby budowania pętli.Pierwszym jest pętla omówiona w poprzednimprzykładzie — pętla ��, dwie pozostałeto odmiany pętli �.���. Kod zawarty w pętli�.��� działa tak długo, jak długo spełnionyjest warunek tej pętli (patrz listing HTML 6.5i aplet 6.5). Przy pierwszym sprawdzeniu tegowarunku, które wykaże jego nieprawdziwość,działanie pętli jest kończone. Jeśli już przypierwszym sprawdzeniu, warunek okaże sięnieprawdziwy, pętla w ogóle nie zostanieuruchomiona.
Wartość zmiennej ���=��F=,�-���-�albo mieści się w przedziale od 1 do 50(wówczas jest prawidłowa), albo wynosi <�(jeśli użytkownik wpisał niepoprawnyłańcuch). Ponieważ � jest inicjalizowanewartością 5, powyższa pętla w ogólenie zadziała, jeśli nie podano prawidłowejwartości, ponieważ <� nie jest większe od 5.Jeśli podana przez użytkownika wartośćjest prawidłowa, kod zawarty w pętli zostanieprzetworzony tyle razy, ile przypisanozmiennej ���=��F=,�-���-�. Za każdymrazem zmienna � jest zwiększana o 1.Przykładowo, jeśli wartość zmiennej���=��F=,�-���-� wynosi !;, pętlauruchomi się 25 razy. Jeśli ���=��F=,�-���-�wynosi <�, pętla �.��� przed pierwszymuruchomieniem stwierdzi nieprawdziwośćwarunku �@���=��F=,�-���-�i nie uruchomi się ani razu.
Wskazówka
� Upewnij się, że pętla �.��� kiedyś sięzakończy. Gdybyś, przykładowo, pominąłinstrukcję �44 w powyższym przykładzie,stworzył byś nieskończoną pętlę, czyli taką,która sama nigdy się nie zakończy.
Inny ro
dza
j pętli —
while
Aplet 6.5. Ciekawe, ile gwiazdek użytkownik będzie
Trzecim i ostatnim typem pętli w Javie jest�D�.���. W układzie �D�.��� sprawdzamywarunek pętli na końcu pętli, a nie na początku.Oznacza to, że pętla zawsze się uruchomiprzynajmniej raz. Listing HTML 6.6 i aplet 6.6prezentują zastosowanie pętli �D�.���.
W takim układzie zmienna łańcuchowa������.0,�����, będzie zawsze zawierałaprzynajmniej jedną gwiazdkę. Musimywięc uważać, w jaki sposób umieścimyten fragment w naszym programie— w tym przypadku sprawdzamy przedwejściem do pętli, czy wartość zmiennej���=��F=,�-���-� jest poprawna(od 1 do 50).
Pętla będzie działać tak długo, jak długo�będzie mniejsze od ���=��F=,�-���-�.Efekt widać na rysunku 6.12.
Istnieje możliwość opuszczenia pętliprzetwarzanej zgodnie z jej warunkami.Taki sposób kończenia pętli można uzyskaćza pomocą instrukcji ����-.
W listingu HTML 6.7 i aplecie 6.7 użytkownikmoże wpisać dowolną liczbę. Niezależniejednak od jej wielkości, pętla nie zadziaławięcej niż dwadzieścia razy.
To jest standardowa pętla ��, któraw najprostszej formie działałaby ażdo osiągnięcia przez licznik � wartościzmiennej ���=��F=,�-���-�. Wstawienieinstrukcji ����- wewnątrz pętli sprawi,że jej działanie zostanie przerwane,gdy �osiągnie wartość !5.
Instrukcja ����- powoduje skokdo pierwszej instrukcji znajdującej sięza pętlą — w naszym przypadku jest to+�����*����+ ������.0,�����,%!5%65".Efekt jest widoczny na rysunku 6.13.
� W Javie istnieje także instrukcja �������.Kiedy jej użyjemy, następujący po niejfragment kodu wewnątrz pętli zostaniepominięty, nie przerywamy jednak jejdziałania. W powyższym przypadku,gdybyśmy zastąpili instrukcję ����-instrukcją �������, pomijane byłybyinstrukcje dopisywania gwiazdki dozmiennej ������.0,�����, od momentuosiągnięcia przez � wartości !5.W przeciwieństwie jednak do przerwaniadziałania pętli instrukcją ����-, gdybyśmyużyli �������, pętla działałaby nadal,aż do momentu zrównania się licznika �z wartością zmiennej ���=��F=,�-���-�.
Prze
ryw
anie
dzia
łania
pętli
Aplet 6.7. Demonstruje opuszczenie pętli za pomocą
Java oferuje jeszcze jeden sposób kontrolowaniaprzetwarzania kodu — konstrukcję �����.D����.Najprostszym sposobem zrozumienia istotytej instrukcji jest spojrzenie na nią jak na zbiórinstrukcji ��D����. Zamiast powiedzieć: „jeślidzisiaj jest poniedziałek, zrób to; w przeciwnymrazie, jeśli dzisiaj jest wtorek, zrób coś innego;w przeciwnym razie, jeśli dzisiaj jest środa,zrób coś jeszcze innego itd.”, możemy użyćkonstrukcji �����.D����, by bezpośredniowyróżnić każdą z możliwości.
Listing HTML 6.8 i aplet 6.8 prezentują gręw kamień, nożyce i papier napisaną z użyciemkonstrukcji �����.D����.
Aby użyć instrukcji switch…case,należy zastosować:
Ponieważ w naszym nowym apleciedo interakcji z użytkownikiem posłużymy sięprzyciskami opcji zamiast polem tekstowym,musimy użyć zupełnie innych metoddo przechwytywania zdarzeń. Korzystamywięc z interfejsu B�����������, którydostarcza nam metodę ����*����K.��+�� "wyzwalaną przez zdarzenie kliknięciaprzycisku opcji.
Każdy przycisk opcji K.��-�� jestpoczątkowo definiowany jako pole wyboru.Później, w kroku 4., określimy, że wszystkietrzy pola będą przyciskami opcji należącymido jednej grupy K.��-��L���.
3. ����K.��-������K.��-��L��� "�
Tworzymy obiekt klasy K.��-��L���(grupa pól wyboru) nazwany ����K.��-��.
Te trzy instrukcje tworzą przycisk opcji-�����K.��-&� będący częścią grupy����K.��-��. Klikając którykolwiekprzycisk należący do tej grupy, spowodujesz,że wszystkie pozostałe przyciski z tej grupyzostaną wyłączone. Pierwszym parametremmetody K.��-�� " jest etykieta (nazwaprzycisku wypisana na ekranie), drugimparametrem jest wspomniana grupaprzycisków, jako trzeci parametr podajemystan przycisku (���� lub �����, zależnieod tego, czy chcemy, by był na początkuwłączony czy wyłączony). Następnieustawiamy ���B����������� �.��"dla nowego przycisku opcji, co pozwolinam dalej przechwytywać zdarzeniazwiązane z przyciskiem za pomocą metody����*����K.��+�� ". Kończymy ten fragmentkodu, wstawiając nasz przycisk opcjiw obszarze apletu.
Podobnie jak we wcześniejszychprzykładach, użyliśmy generatora liczblosowych Javy do przypadkowego wybraniakamienia, nożyc lub papieru przez naszaplet. W efekcie zmienna ���=��������zawiera liczbę losową od 1 do 3. Terazinstrukcja �����. " wybiera odpowiedniblok kodu ���� w zależności od wartościzmiennej ���=��������. Powyższy fragmentmoglibyśmy zapisać następująco:
W tym fragmencie kodu sprawdzamyzmienną typu �.�� (podobny typdo łańcucha, tyle że przechowujący tylkojeden znak), a nie, jak poprzednio, liczbę.Użytkownik dokonuje wyboru, klikającprzycisk opcji, co wyzwala zdarzenie Javy.Możemy odczytać etykietę klikniętegoprzycisku i przypisać zmiennejcałkowitoliczbowej ���=��F=,�-���-�odpowiednią wartość w celu późniejszegoporównania z wyborem apletu (zmienna���=��������). Rysunek 6.14 prezentujewidok apletu na początku gry. Rysunki 6.15,6.16 i 6.17 prezentują możliwe wyniki.
Oto fragment kodu wyzwalany kliknięciemmyszą przez użytkownika. Jeśli obiekteminterakcji był przycisk opcji, zmiennej�,��F=,�-���-� przypisujemy etykietętego przycisku.
� Instrukcja �����.D���� może być używanajedynie dla czterech typów prymitywów:�,��, �.��, ��� i �.��. Właśnie dlategow szóstym kroku sprawdzamy jedyniepierwszą literę zmiennej łańcuchowej�,��F=,�-���-� zamiast całego łańcucha.
� Gdybyśmy pominęli którąkolwiekinstrukcję ����- w powyższych blokach����, przetwarzane byłyby także następnebloki ����. Przerywanie wykonaniainstrukcji �����.D���� jest bardzoprzydatne, może jednak być źródłemwielu błędów w oprogramowaniu.Pamiętaj więc o wstawianiu instrukcji����- na końcu każdego bloku ����.
� Jeśli żadna z wartości wymienionychw instrukcjach ���� nie pasuje do wzorca,przetwarzany jest blok domyślny(rozpoczynający się od słowa �������).Nawet kiedy jesteś przekonany o tym,że któraś z opcji musi zostać wybrana,dla pewności używaj bloku �������.