You are on page 1of 29

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

Po prostu Java 2

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Autor: Dori Smith


Tumaczenie: Mikoaj Szczepaniak
ISBN: 83-7197-686-0
Tytu oryginau: Java 2 for the World Wide Web VQG
Format: B5, stron: 356

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Java jest jednym z najpopularniejszych jzykw programowania na wiecie


wykorzystywanym przy tworzeniu popularnych aplikacji. Jzyk ten dla pocztkujcych
programistw jest czsto pierwszym poznanym jzykiem programowania. Dziki
przemylanej architekturze obiektowej Javy atwiej Ci bdzie nabra prawidowych
nawykw programistycznych, z kolei funkcjonalno tego jzyka sprawi, e nauka nie
pjdzie na marne, a zdobyt wiedz wykorzystasz w praktyce. W Javie mona bowiem
napisa prawie kad aplikacj, od prostej gry dziaajcej w telefonie komrkowym,
po skomplikowany system uruchamiany na potnym serwerze.
Po prostu Java 2 to ksika, dziki ktrej nauczysz si pisa programy w tym jzyku,
nawet jeli programowanie byo Ci do tej pory zupenie obce. Ksika jest pozbawiona
zbdnego balastu teorii. Prezentuje ona wiele zastosowa Javy.
Dziki ksice nauczysz si:
Skadni Javy oraz podstawowych instrukcji
Korzysta z obiektw i rozpoznawa ich metody
Tworzy interfejs uytkownika 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 zbdnych dywagacji dowiedzie si, dlaczego Java cieszy si
takim powodzeniem? Chcesz wykorzysta j do swoich potrzeb? Ta ksika
z pewnoci Ci w tym pomoe.

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Spis treci

Spis treci
Wstp

11

Rozdzia 1. Czym jest Java?


17
Krtka lekcja historii................................................................................. 18
Dlaczego uczy si Javy?.......................................................................... 20
Rozpowszechnione mity o Javie ............................................................... 21
Co bdzie Ci potrzebne............................................................................. 24
Wersje Javy............................................................................................... 25

Rozdzia 3. Uywanie Javy na stronach WWW


37
Znacznik APPLET .................................................................................... 38
Znacznik OBJECT .................................................................................... 40
Znacznik OBJECT poczony ze znacznikiem EMBED .......................... 43
Wywietlanie komunikatw w przegldarkach nie obsugujcych Javy .. 45
Ustawianie pooenia apletw Javy na stronach WWW........................... 47
Znajdowanie apletw w Internecie ........................................................... 49
Przekazywanie parametrw do apletu....................................................... 51
Rozdzia 4. Twoje pierwsze aplety
55
Witaj wiecie!........................................................................................ 56
Posugiwanie si czcionkami .................................................................... 58
Ustawianie koloru ta ................................................................................ 59
Przekazywanie parametrw z pliku HTML do apletu Javy ...................... 60
Dodawanie komentarzy ............................................................................ 62
Zmiana stylu czcionki ............................................................................... 63
Zmiana kolorw ........................................................................................ 64

Spis treci

Rozdzia 2. Podstawy Javy


27
Wprowadzenie w niesamowity wiat Wirtualnej Maszyny Javy.............. 28
Bezpieczestwo Javy ................................................................................ 29
Pliki Javy................................................................................................... 30
Gra w Buzzword Bingo ............................................................................ 31

Spis treci

Spis treci

Rozdzia 5. acuchy
65
Zmienne acuchowe ................................................................................ 66
Wicej o acuchach ................................................................................. 68
Zasig deklaracji zmiennych..................................................................... 70
Metody klasy String.................................................................................. 72
Wszystkie typy liczbowe .......................................................................... 74
Wzajemne przeksztacanie acuchw i liczb........................................... 77
Przeksztacenia typw liczbowych ........................................................... 79
Przeksztacanie przez rzutowanie ............................................................. 81
Tablice obiektw....................................................................................... 83
Rozdzia 6. Podejmowanie decyzji
85
Instrukcje warunkowe if ...................................................................... 86
Przechwytywanie bdw ......................................................................... 89
Wicej o instrukcjach warunkowych ifelse ..................................... 93
Powtarzanie czynnoci za pomoc ptli.................................................... 96
Inny rodzaj ptli while ......................................................................... 98
Ostatni rodzaj ptli dowhile ........................................................... 100
Przerywanie dziaania ptli ..................................................................... 102
Konstrukcja switchcase....................................................................... 104
Rozdzia 7. Wsppraca z uytkownikiem
109
Rysowanie za pomoc myszy ................................................................. 110
Rysowanie w dwch wymiarach ............................................................ 113
Swobodne rysowanie .............................................................................. 116
Przechwytywanie naciskania klawiszy ................................................... 118
Przemieszczanie obrazw ....................................................................... 120
Uywanie klawiszy modyfikujcych ...................................................... 122
Rozdzia 8. Budowa interfejsu uytkownika
125
Strony chronione hasem......................................................................... 126
Wpisywanie i wywietlanie tekstu.......................................................... 129
Praca z polami wyboru............................................................................ 131
Uywanie przyciskw opcji .................................................................... 134
Elementy rozwijanego menu................................................................... 137
Ustawianie menu czcionki w Javie ......................................................... 139
Uywanie wieloliniowych pl tekstowych ............................................. 141
Uywanie list przewijanych .................................................................... 144
6

Spis treci

Rozdzia 9. Rozmieszczanie elementw interfejsu uytkownika


147
Brak rozmieszczenia FlowLayout...................................................... 148
Uywanie menadera FlowLayout.......................................................... 150
Wstawianie wolnych przestrzeni w obszarze apletu............................... 152
Uywanie menadera BorderLayout....................................................... 154
Uywanie menadera GridLayout .......................................................... 156
Uywanie wkadek.................................................................................. 158
Dodawanie komponentw z wykorzystaniem paneli.............................. 160
Uywanie menadera CardLayout .......................................................... 162
Uywanie menadera GridBagLayout .................................................... 165

Rozdzia 11. Java i JavaScript


191
Sprawdzanie obsugi Javy przez przegldark........................................ 192
JavaScript i publiczne metody Javy ........................................................ 194
Przekazywanie danych z JavaScriptu do Javy ........................................ 197
Przekazywanie danych z Javy do JavaScriptu ........................................ 200
Rozdzia 12. Projektowanie interfejsu uytkownika z komponentami Swing 203
Twj pierwszy aplet wykorzystujcy komponent Swing........................ 204
Ustawianie czcionek dla komponentw Swing ...................................... 206
Pola wyboru Swing ................................................................................. 208
Przyciski opcji Swing ............................................................................. 211
Wygld apletu zgodny z preferencjami uytkownika............................. 214
Animacja i Swing.................................................................................... 219
Swing w akcji.......................................................................................... 223

Spis treci

Rozdzia 10. Manipulowanie obrazami i animacje


169
Wywietlanie obrazu............................................................................... 170
Wywietlanie fragmentu obrazu ............................................................. 172
Rysowanie ramki wok apletu............................................................... 174
Wywietlanie wielu obrazw .................................................................. 176
Wtki i animacja ..................................................................................... 179
Podwjnie buforowane animacje ............................................................ 183
Wywietlanie nieskoczonej liczby obrazw ......................................... 186
Kontrola animacji.................................................................................... 188

Spis treci

Rozdzia 13. JavaServer Pages i Serwlety Javy


231
Twoja pierwsza strona JSP ..................................................................... 232
JSP i formularze...................................................................................... 234
Instrukcje warunkowe w JSP .................................................................. 236
Zapisywanie cookies za pomoc JSP...................................................... 238
Odczytywanie cookies za pomoc JSP ................................................... 240
XML i JSP .............................................................................................. 243
Twj pierwszy serwlet ............................................................................ 245
Ankieta i serwlety ................................................................................... 248

Spis treci

Rozdzia 14. Java i narzdzia wizualne


257
Wstawianie znacznika applet w programie Dreamweaver ..................... 258
Wstawianie znacznika object w programie Dreamweaver ..................... 261
Wstawianie znacznika applet w programie GoLive ............................... 263
Wstawianie znacznika object w programie GoLive ............................... 265
Rozdzia 15. Kko i krzyyk
267
Gra w kko i krzyyk............................................................................. 268
Rozdzia 16. Prosty kalkulator
283
Aplet z prostym kalkulatorem................................................................. 284
Rozdzia 17. Prawdziwy wiat Javy hierarchiczne menu
291
Java i hierarchiczne menu ....................................................................... 292
Dodatek A

Gdzie szuka dodatkowych informacji?


307
Java w Internecie..................................................................................... 308
Czasopisma internetowe ......................................................................... 311
Zintegrowane rodowiska oprogramowania ........................................... 312
Ksiki o Javie ........................................................................................ 314
Grupy dyskusyjne ................................................................................... 316
Witryny internetowe a przenono Javy................................................ 317

Dodatek B

Zarezerwowane sowa kluczowe


319
Zarezerwowane sowa kluczowe Javy .................................................... 320

Dodatek C

Hierarchia obiektw Javy


323
Pakiet java.applet .................................................................................... 324
Pakiet java.awt ....................................................................................... 324
Pakiet java.awt.color (wprowadzony w JDK 1.2) .................................. 325
Pakiet java.awt.datatransfer (wprowadzony w JDK 1.1)........................ 326

Spis treci

Dodatek D

Rnice pomidzy JDK 1.0, 1.1, 1.2 i 1.3


339
Stary model zdarze ............................................................................ 340
Skorowidz

347

Spis treci

Pakiet java.awt.dnd (wprowadzony w JDK 1.2)..................................... 326


Pakiet java.awt.event (wprowadzony w JDK 1.1) .................................. 327
Pakiet java.awt.font (wprowadzony w JDK 1.2) .................................... 327
Pakiet java.awt.geom (wprowadzony w JDK 1.2).................................. 328
Pakiet java.awt.im (wprowadzony w JDK 1.2) ...................................... 328
Pakiet java.awt.image (wprowadzony w JDK 1.2) ................................. 329
Pakiet java.awt.image.renderable (wprowadzony w JDK 1.2) ............... 330
Pakiet java.awt.peer (od wersji JDK 1.1, nie powinno si
bezporednio uywa interfejsw tego pakietu) ..................................... 330
Pakiet java.awt.print (wprowadzony w JDK 1.2) ................................... 331
Pakiet java.beans (wprowadzony w JDK 1.1) ........................................ 331
Pakiet java.beans.beancontext (wprowadzony w JDK 1.2) .................... 332
Pakiet java.io........................................................................................... 333
Pakiet java.lang ...................................................................................... 334
Pakiet java.lang.ref (wprowadzony w JDK 1.2) ..................................... 335
Pakiet java.lang.reflect (wprowadzony w JDK 1.1) ............................... 335
Pakiet java.math (wprowadzony w JDK 1.1) ......................................... 336
Pakiet java.net ......................................................................................... 336
Pakiet java.text (wprowadzony w JDK 1.1) ........................................... 336
Pakiet java.util ........................................................................................ 337
Pakiet java.util.jar (wprowadzony w JDK 1.2) ....................................... 337
Pakiet java.util.zip (wprowadzony w JDK 1.1) ...................................... 338

Podejmowanie decyzji

Podejmowanie decyzji
Podejmowanie decyzji
Nie zawsze aplety Javy przechodz najprostsz
drog od pierwszej do ostatniej instrukcji.
Niekiedy potrzebne jest ominicie fragmentu
kodu, czy te powtrne uruchomienie pewnych
instrukcji. Wpywanie na przebieg dziaania
programu nazywa si sterowaniem przepywem
(ang. flow control). W tym rozdziale omwimy,
jak zapanowa nad kierunkiem przetwarzania
Twojego kodu.

Podejmowanie decyzji
85

Rozdzia 6.

Instrukcje warunkowe if
Najprostszym sposobem przejcie kontroli
nad dziaaniem apletu jest uycie instrukcji .
Dziaanie tej instrukcji mona wyrazi sowami:
Jeli () jaka warto jest prawdziwa (),
wwczas uruchom instrukcje znajdujce si
w nawiasach klamrowych. W przeciwnym
wypadku pomi ten fragment kodu. Listing
HTML 6.1 i aplet 6.1 pokazuj, jak uywa
instrukcji warunkowych w celu wywietlenia
wpisanego przez uytkownika tekstu.

Aby skorzysta z instrukcji if,


naley wpisa:

Instrukcje warunkowe if

1.  
  

Na pocztku musimy obsuy zdarzenia


generowane przez uytkownika. Konieczne
do tego bd klasy z pakietu   ,
ktre w tym kroku importujemy.
2. 
 




 


Nasza nowa klasa (nazwana ) zostaa


zdefiniowana jako rozszerzenia standardowej
klasy . Nowoci w tej definicji jest
sowo kluczowe 
 .
Oznacza to, e nasz aplet bdzie zdolny
do obsugi zdarze generowanych przez
uytkownika i bdzie przez cay czas swojego
dziaania oczekiwa na jego konkretne
czynnoci. Tabela 6.1 przedstawia metody
suce do przechwytywania interakcji
z uytkownikiem dla poszczeglnych
elementw.
3. 



 !"
 



  #$  #%
 
&'(%
!)"
*+
 ,-

##

Oto, jak tworzymy nowe zmienne:


pole tekstowe , przeznaczone
do wpisywania znakw przez uytkownika,
zmienn czcionki , ktr ustawiamy
na rozmiar 24-punktowy i pogrubiony krj
Times Roman, oraz acuch  ,-,
ktry bdzie zawiera tekst wpisany przez
uytkownika i wypisywany pniej na ekranie
(na pocztku ustawiamy acuch jako pusty).
86

Listing HTML 6.1. Umieszcza aplet 6.1 w oknie


przegldarki

 

   
 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++ 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++ 
 

)$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 


Aplet 6.1. Jeli wpiszesz tekst do pola inField, Java


wywietli go na ekranie
+
,1/
+
,++++/


 
       
  
       !
" # $ #% &'(% )!
*+  , -##

+- 
,
 23
4

'5- 2" 3/


    .!
  !

+- 
,
+ 27+ 
3
4

 *203/
"  , -/##!
+  *+#0 1 23#4  , -%
 5%65!

6

 7 " 8
 !
  , -  +  !
  !
9
6

Podejmowanie decyzji
4.    ."
 "

Rysunek 6.1. Oto aplet wywietlajcy wpisany


przez uytkownika tekst

Teraz wstawiamy dwie nowe instrukcje


metodzie  ". Pierwsza okrela, e
chcemy uy interfejsu  
(omwionego w kroku 2.), by przechwytywa
dziaania uytkownika w polu tekstowym
. Dziki temu, za kadym razem,
kiedy uytkownika cokolwiek wpisze
w tym polu, wyzwolone bdzie
odpowiednie zdarzenie w Javie (ang. event).
Druga linia spowoduje wywietlenie pola
tekstowego w obszarze apletu.

Instrukcje warunkowe if

5. 
 ,-
/
##"


+ *+ #0 123


#
4
 ,-%
!5%
65"
7

Wtedy, i tylko wtedy, gdy acuch


 ,- zawiera jakikolwiek znak
(dugo acucha jest wiksza od zera),
wywietlamy tekst wpisany przez
uytkownika. Jeli acuch jest pusty,
instrukcja + *+ " nie zostanie
wykonana.
Wskazwki
 Jeli programowae wczeniej w innych

jzykach, moesz sdzi, e konieczne


jest uycie instrukcji . po instrukcji .
W Javie nie uywa si tej instrukcji.
 Bardzo czsto w programach Javy mona
spotka instrukcj  poprzedzajc

pojedyncz, wcit instrukcj


nie umieszczon w nawiasach
klamrowych. Taka poprawna skadnia
oznacza, e instrukcja warunkowa 
dotyczy tylko jednej, nastpujcej po niej
instrukcji. Dla zachowania przejrzystoci
kodu, w ksice tej zawsze bdziemy
nastpujce po  instrukcje umieszcza
w nawiasach klamrowych.

6. 

 8 
 9 
"


 ,-

+ "

  "


7

Poniewa dodalimy wczeniej


  do pola tekstowego
, metoda  8  "
bdzie obsugiwa wszystkie zdarzenia
wywoane przez uytkownika. Jedynym
moliwym zdarzeniem w tym aplecie jest
wpisanie tekstu w jedynym polu tekstowym.
Kiedy to si stanie, przypisujemy zmiennej
acuchowej  ,- dane z tego pola.
Nastpnie wywoujemy metod   ",
ktra odwiea obszar apletu (efekt
moemy zobaczy na rysunku 6.1).

87

Rozdzia 6.
Tabela 6.1. Zdarzenia w Javie
Interfejs

Komponenty

Metody

  

'- (przycisk)

 80 23

 (lista)
9.*  (pole tekstowe)
:-; (element menu)
 -  

< (pasek przewijania)

 - =-" 23

"+ 

Wszystkie komponenty

+> 23
"+:, 23
+? @ 23
+<23

"  

Wszystkie pojemniki

*- 

Wszystkie komponenty

+  23
+?, 23
0- 7  23

Instrukcje warunkowe if

0-  23
; 

"5. (pole wyboru)

<" 23

"5'.:-; (pole wyboru elementu menu)


"  (lista rozwijana)
;< (element moliwy do wybrania)
 (lista)
A 

Wszystkie komponenty

58  23
5?  23
59+ 23

:-  

Wszystkie komponenty

- " 5 23


- & 23
- &.  23
- 8  23
- ?  23

:- :  

Wszystkie komponenty

-   23

9. 

9."+ (komponent tekstowy)

.=-" 23

B   

B   (okno)

   , 23

- :, 23

  "  23
  " 23
    , 23
     0  23
  ; 0  23
  C+ 23

88

Podejmowanie decyzji
Listing HTML 6.2. Wywouje aplet 6.2 i umieszcza
go w oknie przegldarki internetowej

Kiedy umoliwiasz uytkownikowi interakcj


z Twoim apletem, moe si zdarzy, e dane,
ktre poda, nie bd pasoway do zaoe
Twojego programu. Listing HTML 6.2 i aplet
6.2 pokazuj, jak przechwyci potencjalne
bdy, zanim spowoduj powane problemy
w dziaaniu apletu.

Aby przechwyci bdy, naley uy:


1. 
 :+ , 


 ;"

  8 

<

Powyej definiujemy zmienn


 :+ ,  typu  (pole
tekstowe o dugoci 5). Wykorzystamy
to pole do pobierania od uytkownika
zgadywanej liczby. Zmienna   8 
posuy nam do przechowywania wpisywanej
przez uytkownika liczby przypisujemy
jej warto pocztkow <. Warto jest na
pewno niepoprawna (szukana liczba naley
do przedziau od 1 do 100), zatem uywamy
<, by program wiedzia, e uytkownik
nie poda jeszcze adnej wartoci.
2. 
=-  =

"  +
> .   "

55"
4


Metoda Javy  +> .   "


generuje rzeczywist liczb losow
z przedziau od 0 do 1 (np. 0,722 lub 0,111).
Mnoymy t warto przez 100 (mamy wic
72,2 lub 11,1). Na kocu przeksztacamy
t warto na liczb cakowit (rzutujemy
na typ ), co powoduje obcicie czci
dziesitnej naszej liczby (otrzymujemy
zatem liczb od 0 do 99). Po dodaniu 1
mamy wynik od 1 do 100 i przypisujemy
tak wanie warto zmiennej =-  = .
Zarwno zmienna   8  ,
jak i =-  = s typu .

89

Przechwytywanie bdw


 

   
D 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++D 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++D 
 

)$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 


Przechwytywanie bdw

Rozdzia 6.
3. *+
 =,

  8 
4
#

=- ?
=?#
+  "

Wewntrz metody   " zdefiniowalimy


now zmienn acuchow:  =,.
Przypisujemy jej warto zmiennej
  8  z doczonym komunikatem
o udanej prbie odgadnicia liczby
(patrz rysunek 6.2). W drugiej instrukcji
ustawiamy czcionk dla naszego apletu
(za pomoc zmiennej ).
4. 
  8 
/
=-  = "


 =,

  8 
4
#



=- ?
=?#
7

Przechwytywanie bdw

Oto nasza pierwsza instrukcja .


Sprawdzamy w niej, czy liczba bdca
wartoci zmiennej   8  rni si
od wylosowanej wczeniej wartoci
=-  = ; sprawdzamy zatem,
czy podana przez uytkownika liczba rni
si od wartoci, ktr prbuje odgadn.
Jeli wynikiem porwnania bdzie 
(uytkownikowi nie udao si odgadn
naszej liczby), zostanie uruchomiony
kod znajdujcy si wewntrz nawiasw
klamrowych. W przeciwnym wypadku,
ten fragment programu zostanie pominity.
Jeli uytkownik nie odgad wylosowanej
liczby, ponownie ustawiamy zmienn
 =,, tym razem z komunikatem
o nieudanej prbie (patrz rysunek 6.3).

90

Aplet 6.2. Zagrajmy w gr zgadnij, jak sobie


wymyliem liczb
+
,1/
+
,++++/
+
,,1/
+- 

++D
.
++
+
  
4
   :+ ,     ;!
   7 <
=-  = !
 + > .
 !55!4
" # $ #% &'(%
 )!

+- 
,
 23
4

'5- 2" 3/

+E     2 3/

 2+E  3/

+- 
,
+ 27+ 
3
4
*+ =,   7 4#
 =- ?=?#
+  "!
"   7 /=-  = !
 =,   7 4#
 =- ?=?#
9
"   7 @!
 =,#'+ =A
55#
9
+  *+ =,% 5%65!

6

 7 " 8
 !
" + * !  "  !
,
   7 B +    B
 :+ ,  +  !!
9
 .C  8 !
   7 <
9
  !

6
6

Podejmowanie decyzji
5. 
  8 
@
"


 =,

#'+ 
=A




55#
7

Rysunek 6.2. Oto efekt, na ktry czekalimy

Oto kolejna instrukcja warunkowa .


Tym razem sprawdzamy, czy warto
zmiennej   8  jest mniejsza od 1,
co oznacza, e podana warto jest spoza
naszego przedziau. W takim przypadku
przypominamy uytkownikowi, jakiej
liczby od niego oczekujemy (wida to
na rysunku 6.4).
6. + *+  =,%
!5%
65"

Przechwytywanie bdw

Za pomoc tej instrukcji wywietlamy to,


co wczeniej przypisalimy wartoci
 =, (odpowiedni komunikat
o trafieniu, chybieniu, bd o podaniu
liczby spoza przedziau).
7. 

 8 
 9 
"



+*  "
  

"

Rysunek 6.3. Musisz sprbowa jeszcze raz

Oto metoda  8  "


wyzwalana zdarzeniem generowanym
przez uytkownika. Ten fragment kodu
jest uruchamiany za kadym razem,
gdy uytkownik wpisuje cokolwiek
w polu tekstowym. Na pocztku metody
 8  " sprawdzamy,
czy zdarzenie, ktre chcemy obsuy,
rzeczywicie dotyczy pola tekstowego.
Sprawdzamy zatem za pomoc instrukcji
warunkowej , czy rdem zdarzenia
jest obiekt pola tekstowego (egzemplarz
klasy ).

Rysunek 6.4. Jeli wpiszesz co innego ni liczb,


zobaczysz taki komunikat

91

Rozdzia 6.
8. ,


  8 

B+ B

 :+ ,  + ""


7
 .
C  9 
"


  8 

<
7
  "

Przechwytywanie bdw

Instrukcja , jest specyficznym rodzajem


instrukcji warunkowej. W tym przypadku
prbujemy wykona instrukcj, ktra moe
spowodowa bd. Umieszczamy j wewntrz
bloku ,D .. Jeli jej dziaanie bdzie
poprawne (nie spowoduje bdu), nie bdzie
to miao znaczenia. W przeciwnym wypadku
spowoduje wyjtek, ktry naley przechwyci
i obsuy (za pomoc instrukcji  .).
W tym przypadku prbujemy przeksztaci
wpisany przez uytkownika tekst na liczb.
Poniewa w polu tekstowym uytkownik
moe wpisa dowolny cig znakw, takie
przeksztacenie moe si nie uda i std
konieczno uycia bloku ,D ..
Jeli podany acuch ma poprawny format
liczbowy, przypisujemy warto otrzymanej
liczby zmiennej   8  .
W przeciwnym razie jest wyzwalany
wyjtek C  9  (bdny
format liczby), wwczas przypisujemy
zmiennej   8  warto <.
Niezalenie od rezultatu przeksztacenia
wywoujemy metod   ",
ktra przerysuje obszar apletu.
Wskazwka
 Powyszy przykad nie prezentuje

najlepszego pomysu na tego typu gr.


rednio uytkownik musi 50 razy
sprbowa szczcia, zanim odgadnie
wylosowan liczb. W nastpnym
przykadzie zaprezentujemy duo
ciekawsze rozwizanie.

92

Java odrzuca nasze polecenia


Wyjtki w Javie mona wyrazi
przesaniem od programu mwicym
zrb to inaczej. rdem wyjtkw s
nieprzewidziane i niechciane
zdarzenia. Przykadowo, Java nie
bdzie w stanie zamieni liter na liczb.
Kiedy Java wyzwala wyjtek, Ty,
programista, musisz go przechwyci.
Zrobisz to za pomoc sowa
kluczowego  ., po ktrym okrelisz,
co program Javy ma zrobi w razie
wystpienia potencjalnych wyjtkw.

Podejmowanie decyzji
Listing HTML 6.3. Wywietla aplet 6.3 w oknie
przegldarki internetowej

Niekiedy niezbdne jest jedynie wyraenie


tego, co ma si sta, jeli dane wyraenie jest
prawdziwe. Czasem jednak bdziesz chcia
wyznaczy instrukcje, ktre powinny by
przetworzone, gdy warunek instrukcji  nie
jest speniony. Suy do tego instrukcja 
wskazujca na blok kodu uruchamiany tylko
wtedy, gdy warunek instrukcji warunkowej

nie jest speniony. Listing HTML 6.3 i aplet
6.3 prezentuj poprawiony aplet gry zgadnij,
jak sobie wymyliem liczb, ktry prezentuje
uytkownikowi kierunek, w ktrym powinien
poda.

Aby korzysta z konstrukcji ifelse,


naley zastosowa:
1. 
  8 
/
=-  = "


Zaczynamy od sprawdzenia, czy podana


przez uytkownika liczba rni si od
wylosowanej. Fragment kodu poprzedzony
t instrukcj warunkow zostanie wykonany
tylko w przypadku niezgodnoci liczby
uytkownika z wylosowan przez aplet.
2. 
  8 
@
"


 =,

#'+ 
=A




55#
7

Teraz sprawdzamy, czy zmienna


  8  ma warto <, co
oznaczaoby, e metoda   " dziaa
po raz pierwszy lub e uytkownik
wpisa cig znakw, ktrego nie mona
przeksztaci na liczb. Jeli warunek
jest speniony, wywietlamy komunikat
Odgadnij liczb od 1 do 100.

93

Wicej o instrukcjach warunkowych


 

   
( 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++( 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++( 

 )$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 


Wicej o instrukcjach
warunkowych ifelse

Rozdzia 6.
3. 


Wicej o instrukcjach warunkowych

W przeciwnym wypadku, jeli warto


zmiennej   8  jest rna od
wartoci zmiennej =-  = oraz
  8  jest poprawn liczb,
uruchamiamy fragment kodu poprzedzony
sowem . W tym przypadku fragment
skada si z kolejnego bloku D.
4. 
  8 
@
=-  = "


 =,

  8 
4
#


=
 1 #
7



 =,

  8 
4
#


=
E #
7

Teraz sprawdzamy, czy warto zmiennej


  8  jest mniejsza od wartoci
przechowywanej w zmiennej =-  = .
Jeli tak, zmienna   8  bdzie
wywietlona z komunikatem, e podana
liczba jest za maa. W przeciwnym razie
zakomunikujemy uytkownikowi, e jest
za dua. Na rysunku 6.5 prezentujemy
wygld apletu, gdy podana liczba jest
za dua, rysunki 6.6 i 6.7 prezentuj efekt
dla zbyt maej liczby. Jeli w kocu podamy
liczb rwn szukanej, zobaczymy
komunikat widoczny na rysunku 6.8.

Aplet 6.3. Ulepszona wersja gry zgadnij, jak


sobie wymyliem liczb
+
,1/
+
,++++/
+
,,1/
+- 

++(
.
++
+
  
4

9.* 
+E  


9.*  2)3/


 +8

%/


@-5 @

2 32,:

 23
1
$$3
F
/

*
0


*29  ?G
*'C G

D#3/

+- 
,
 23
4

'5- 2" 3/

+E     2 3/

 2+E  3/

+- 
,
+ 27+ 
3
4

< 
- @

 +8
F


 
@-5H
 @H/

 *203/
"   7 /=-  = !
"   7 @!
 =,#'+ =A
55#
9
  
"   7 @=-  = !
 =,   7 4#
=  1#
9
  
 =,   7 4#
= D#
9

 < 2 - @G


D$G
$3/

+- 
,
 80 2 &,
3
4

0
2<-23
 0
9.*  3
4


4

 +8

;+ ;

2+E  9.233/


2I-*&.+ 
.3
4

 +8

%/

+ 23/

6
6

94

Podejmowanie decyzji
Wskazwka
 W poprzednim przypadku uytkownik

musia prbowa 50 razy, by osign 50%


szans na sukces. W tym przypadku mamy
tak sam moliwo odgadnicia liczby
po najwyej siedmiu prbach.

Rysunek 6.5. Zaczniemy od liczby 50 i zobaczymy,


czy jest za dua czy za maa

Wicej o instrukcjach warunkowych

Rysunek 6.6. Poowa z rnicy midzy 50 a 100


to 75 okazuje si, e to za duo

Rysunek 6.7. Poowa z rnicy midzy 50 a 75


to 62 tym razem za mao

Rysunek 6.8. Tym razem podajemy 71 nareszcie,


prawidowa warto

95

Rozdzia 6.

Powtarzanie czynnoci
za pomoc ptli

Powtarzanie czynnoci za pomoc ptli

Struktura D, ktr posugiwalimy si


w poprzednim przykadzie, pozwalaa uruchamia
albo jeden, albo drugi blok kodu. W przyszoci
czsto moesz stawa przed koniecznoci wpisania
jednej lub wielu instrukcji, ktre powinny by
uruchomione wielokrotnie. Rozwizaniem, ktre
pozwala to zrealizowa, jest ptla. Listing HTML
6.4 i aplet 6.4 demonstruj jeden z rodzajw ptli:
 . W poniszym przykadzie umoliwimy
uytkownikowi wpisanie liczby, na podstawie
ktrej wywietlimy rzd gwiazdek w oknie
przegldarki.

Zaptlenie kodu
Ptla   skada si z trzech czci (patrz
rysunek 6.10):
1. Inicjalizacja podczas pierwszego
przejcia ptli inicjalizowana jest
zmienna ptli licznik ptli.
2. Ograniczenie tak okrelamy, kiedy
ptla si zakoczy. W normalnych
warunkach ludzie odliczaj od jednego
do dziesiciu; powszechn praktyk
w jzykach programowania jest
odliczanie od zera do dziewiciu.
W obu przypadkach kod wewntrz
ptli zostanie przetworzony dziesi
razy, jednak metoda liczenia od
zera jest wygodniejsza w jzykach
programowania takich jak Java z racji
indeksowania tablic od zera. Dlatego
wanie okrelamy ograniczenia
w ptli jako mniejszy ni warto
= F=,- - , a nie mniejszy
lub rwny wartoci = F=,- - .
3. Inkrementacja w tej czci
okrelamy, jak dalece zwiksza
licznik ptli w kadej kolejnej iteracji
ptli. W tym przypadku dodajemy
jeden za pomoc znakw 44
po identyfikatorze zmiennej.

Rysunek 6.10. Trzy czci ptli

96

Listing HTML 6.4. Oto, jak moemy wywoa nasz


nowy aplet

 

   
# 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++# 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++# 
 

)$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 


Rysunek 6.9. Uytkownik poprosi o 29 gwiazdek


i natychmiast je otrzyma

Podejmowanie decyzji
Aplet 6.4. Aplet pyta uytkownika o liczb
gwiazdek i wywietla je za pomoc ptli
+
,1/
+
,++++/
+
,,1/
+- 

++#
.
++
+
  
4

9.* 
+J@5 5


9.*  2)3/


 @J@5 5

%/

*
0


*29  ?G
*'C G

D#3/

+- 
,
+ 27+ 
3
4

< 
-B  

/


/

 *203/
"= E=,- - @FF
= E=,- - G;5!
 .0, ,#7 =A
;5#
9
  
"5@= E=,- - 44!
 .0, , .0, ,4
##
9
9

 < 2-B  G


D$G
$3/

+- 
,
 80 2 &,
3
4

0
2<-23
 0
9.*  3
4


4

 @J@5 5

;+ ;

2+J@5 59.233/


2I-*&.+ 
.3
4

 @J@5 5

%/

+ 23/

6
6

1. 
= F=,- -
@

GG
= F=,- -
H
;5"


 .0,  ,

#8 
=A




;5#
7

Na pocztku upewniamy si, czy uytkownik


wpisa liczb mieszczc si w zaoonym
przedziale (od 1 do 50).
2. 


 
5
@= F=,- - 
44"


 .0,  ,

 .0,  ,

4
##

7
7

Jeli liczba jest prawidowa (nie speniony


warunek instrukcji  z poprzedniego kroku),
przechodzimy do ptli  . Pierwsza cz
inicjalizuje licznik ptli  wartoci 5.
W drugiej czci okrelamy, e ptla bdzie
dziaa tak dugo, a  bdzie mniejsze
od wartoci podanej przez uytkownika.
Trzeci element okrela operacj wykonywan
przy kadej iteracji ptli, w tym przypadku
licznik ptli bdzie zwikszany o .
Na rysunku 6.9 wida efekt dziaania
apletu po tym, jak uytkownik wpisa 29.
Do zmiennej  .0,  , (pocztkowo
jest pustym acuchem) dodajemy gwiazdk
przy kadym nawrocie ptli.
Wskazwka
 Znaki GG pomidzy warunkami
sprawdzajcymi, czy = F=,- -

jest mniejsza od 1 i wiksza ni 50


oznaczaj logiczn alternatyw (czyli lub).
Mwi to, e cay warunek  jest prawdziwy,
jeli cho jeden z warunkw skadowych
(rozdzielonych GG) jest prawdziwy.
Gdybymy chcieli, by konieczna
bya prawdziwo oby warunkw,
rozdzielilibymy je znakami II
oznaczajcymi koniunkcj (czyli i).

97

Powtarzanie czynnoci za pomoc ptli

+- 
,
 23
4

'5- 2" 3/

+J@5 5   2 3/

 2+J@5 53/

Aby korzysta z ptli for,


naley zastosowa:

Rozdzia 6.

Inny rodzaj ptli while

Inny rodzaj ptli while

W Javie istniej trzy sposoby budowania ptli.


Pierwszym jest ptla omwiona w poprzednim
przykadzie ptla  , dwie pozostae
to odmiany ptli .. Kod zawarty w ptli
. dziaa tak dugo, jak dugo speniony
jest warunek tej ptli (patrz listing HTML 6.5
i aplet 6.5). Przy pierwszym sprawdzeniu tego
warunku, ktre wykae jego nieprawdziwo,
dziaanie ptli jest koczone. Jeli ju przy
pierwszym sprawdzeniu, warunek okae si
nieprawdziwy, ptla w ogle nie zostanie
uruchomiona.

Listing HTML 6.5. Wstawia aplet 6.5 na stron WWW



 

   
) 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++) 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++) 
 

)$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 


Rysunek 6.11. Teraz uytkownik poprosi jedynie


o trzy gwiazdki

98

Podejmowanie decyzji
Aplet 6.5. Ciekawe, ile gwiazdek uytkownik bdzie
chcia wywietli tym razem
+
,1/
+
,++++/
+
,,1/
+- 

++)
.
++
+
  
4

9.* 
+J@5 5


9.*  2)3/


 @J@5 5

%/

*
0


*29  ?G
*'C G

D#3/

+- 
,
 23
4

'5- 2" 3/

+J@5 5   2 3/

 2+J@5 53/

 *203/

0
2 @J@5 5

)$3
4

 @J@5 5

%/

0
2 @J@5 5

3
4

-B  

8 
 @K




)$/

6
 . @= E=,- - !
 .0, , .0, ,4##
44
9

 < 2-B  G


D$G
$3/

+- 
,
 80 2 &,
3
4

0
2<-23
 0
9.*  3
4


4

 @J@5 5

;+ ;

2+J@5 59.233/


2I-*&.+ 
.3
4

 @J@5 5

%/

+ 23/

6
6

1. .

@
= F=,- - "

 .0,  ,

 .0,  ,
4

##

44
7

Warto zmiennej = F=,- -


albo mieci si w przedziale od 1 do 50
(wwczas jest prawidowa), albo wynosi <
(jeli uytkownik wpisa niepoprawny
acuch). Poniewa  jest inicjalizowane
wartoci 5, powysza ptla w ogle
nie zadziaa, jeli nie podano prawidowej
wartoci, poniewa < nie jest wiksze od 5.
Jeli podana przez uytkownika warto
jest prawidowa, kod zawarty w ptli zostanie
przetworzony tyle razy, ile przypisano
zmiennej = F=,- - . Za kadym
razem zmienna  jest zwikszana o 1.
Przykadowo, jeli warto zmiennej
= F=,- - wynosi !;, ptla
uruchomi si 25 razy. Jeli = F=,- -
wynosi <, ptla . przed pierwszym
uruchomieniem stwierdzi nieprawdziwo
warunku 
@
= F=,- -
i nie uruchomi si ani razu.
Wskazwka
 Upewnij si, e ptla . kiedy si

zakoczy. Gdyby, przykadowo, pomin


instrukcj 44 w powyszym przykadzie,
stworzy by nieskoczon ptl, czyli tak,
ktra sama nigdy si nie zakoczy.

99

Inny rodzaj ptli while

+- 
,
+ 27+ 
3
4

< 
-B  

/




$/

Aby uywa ptli while, naley wpisa:

Rozdzia 6.

Ostatni rodzaj ptli


dowhile
Trzecim i ostatnim typem ptli w Javie jest
 D.. W ukadzie  D. sprawdzamy
warunek ptli na kocu ptli, a nie na pocztku.
Oznacza to, e ptla zawsze si uruchomi
przynajmniej raz. Listing HTML 6.6 i aplet 6.6
prezentuj zastosowanie ptli  D..

Ostatni rodzaj ptli dowhile

Aby uy ptli dowhile,


naley wpisa:
1. 


 .0,  ,

 .0,  ,
4

##

44
7
.

@
= F=,- - "

W takim ukadzie zmienna acuchowa


 .0,  , bdzie zawsze zawieraa
przynajmniej jedn gwiazdk. Musimy
wic uwaa, w jaki sposb umiecimy
ten fragment w naszym programie
w tym przypadku sprawdzamy przed
wejciem do ptli, czy warto zmiennej
= F=,- - jest poprawna
(od 1 do 50).

Listing HTML 6.6. Poniszy plik HTML wywouje


aplet 6.6 zawierajcy ptl dowhile

 

   
 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++ 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++ 
 

)$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 


Ptla bdzie dziaa tak dugo, jak dugo



bdzie mniejsze od = F=,- - .
Efekt wida na rysunku 6.12.

Rysunek 6.12. Uytkownik zada 34 gwiazdki

100

Podejmowanie decyzji
Aplet 6.6. Za pomoc ptli dowhile przetwarzamy
danie uytkownika
+
,1/
+
,++++/
+
,,1/
+- 

++
.
++
+
  
4

9.* 
+J@5 5


9.*  2)3/


 @J@5 5

%/

*
0


*29  ?G
*'C G

D#3/

Ostatni rodzaj ptli dowhile

+- 
,
 23
4

'5- 2" 3/

+J@5 5   2 3/

 2+J@5 53/

+- 
,
+ 27+ 
3
4

< 
-B  

/




$/

 *203/

0
2 @J@5 5


LL

 @J@5 5

)$3
4

-B  

8 
 @K




)$/

 
4

 .0, , .0, ,4
##
44
9 . @= E=,- - !

 < 2-B  G


D$G
$3/

+- 
,
 80 2 &,
3
4

0
2<-23
 0
9.*  3
4


4

 @J@5 5

;+ ;

2+J@5 59.233/


2I-*&.+ 
.3
4

 @J@5 5

%/

+ 23/

6
6

101

Rozdzia 6.

Przerywanie dziaania ptli


Istnieje moliwo opuszczenia ptli
przetwarzanej zgodnie z jej warunkami.
Taki sposb koczenia ptli mona uzyska
za pomoc instrukcji  -.
W listingu HTML 6.7 i aplecie 6.7 uytkownik
moe wpisa dowoln liczb. Niezalenie
jednak od jej wielkoci, ptla nie zadziaa
wicej ni dwadziecia razy.

Przerywanie dziaania ptli

Aby przerwa dziaanie ptli,


naley uy:
1.  
5
@= F=,- - 
44"




H
!5"
 -

 .0,  ,

 .0,  ,
4

##
7

To jest standardowa ptla  , ktra


w najprostszej formie dziaaaby a
do osignicia przez licznik  wartoci
zmiennej = F=,- - . Wstawienie
instrukcji  - wewntrz ptli sprawi,
e jej dziaanie zostanie przerwane,
gdy 
osignie warto !5.

Listing HTML 6.7. Wstawia na stron aplet 6.7



 

   
M 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++M 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++M 
 

)$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 


Instrukcja  - powoduje skok


do pierwszej instrukcji znajdujcej si
za ptl w naszym przypadku jest to
+ *+  .0,  ,%
!5%
65".

Efekt jest widoczny na rysunku 6.13.


Rysunek 6.13. Niezalenie od tego, jak liczb
podamy, zobaczymy maksymalnie 20 gwiazdek

102

Podejmowanie decyzji
Aplet 6.7. Demonstruje opuszczenie ptli za pomoc
instrukcji break
+
,1/
+
,++++/
+
,,1/
+- 

++M
.
++
+
  
4

9.* 
+J@5 5


9.*  2)3/


 @J@5 5

%/

*
0


*29  ?G
*'C G

D#3/

+- 
,
 23
4

'5- 2" 3/

+J@5 5   2 3/

 2+J@5 53/

Wskazwka
 W Javie istnieje take instrukcja  .

Kiedy jej uyjemy, nastpujcy po niej


fragment kodu wewntrz ptli zostanie
pominity, nie przerywamy jednak jej
dziaania. W powyszym przypadku,
gdybymy zastpili instrukcj  instrukcj  , pomijane byyby
instrukcje dopisywania gwiazdki do
zmiennej  .0,  , od momentu
osignicia przez  wartoci !5.
W przeciwiestwie jednak do przerwania
dziaania ptli instrukcj  -, gdybymy
uyli  , ptla dziaaaby nadal,
a do momentu zrwnania si licznika 
z wartoci zmiennej = F=,- - .

Przerywanie dziaania ptli

+- 
,
+ 27+ 
3
4

< 
-B  

/


/

 *203/

0
2 @J@5 5

3
4

-B  

8 
 @K




D$/

 
4
"5@= E=,- - 44!
"G 5! -
 .0, , .0, ,4
##
9

 < 2-B  G


D$G
$3/

+- 
,
 80 2 &,
3
4

0
2<-23
 0
9.*  3
4


4

 @J@5 5

;+ ;

2+J@5 59.233/


2I-*&.+ 
.3
4

 @J@5 5

%/

+ 23/

6
6

103

Rozdzia 6.

Java oferuje jeszcze jeden sposb kontrolowania


przetwarzania kodu konstrukcj .D .
Najprostszym sposobem zrozumienia istoty
tej instrukcji jest spojrzenie na ni jak na zbir
instrukcji D. Zamiast powiedzie: jeli
dzisiaj jest poniedziaek, zrb to; w przeciwnym
razie, jeli dzisiaj jest wtorek, zrb co innego;
w przeciwnym razie, jeli dzisiaj jest roda,
zrb co jeszcze innego itd., moemy uy
konstrukcji .D , by bezporednio
wyrni kad z moliwoci.

Konstrukcja switchcase

Listing HTML 6.8 i aplet 6.8 prezentuj gr


w kamie, noyce i papier napisan z uyciem
konstrukcji .D .

Aby uy instrukcji switchcase,


naley zastosowa:
1. 
 
J



B


Poniewa w naszym nowym aplecie


do interakcji z uytkownikiem posuymy si
przyciskami opcji zamiast polem tekstowym,
musimy uy zupenie innych metod
do przechwytywania zdarze. Korzystamy
wic z interfejsu B, ktry
dostarcza nam metod * K. + "
wyzwalan przez zdarzenie kliknicia
przycisku opcji.
2. K.- L 
K.- 
K.- 
- K.-& %
 =,K.-& %
 K.-& 

Kady przycisk opcji K.-  jest


pocztkowo definiowany jako pole wyboru.
Pniej, w kroku 4., okrelimy, e wszystkie
trzy pola bd przyciskami opcji nalecymi
do jednej grupy K.- L .
3. K.- 


K.- L  "

Tworzymy obiekt klasy K.- L 


(grupa pl wyboru) nazwany K.- .

104

Listing HTML 6.8. Tak wstawiamy nasz gr


zapisan w aplecie 6.8

 

   
 
 
 
 

   !"#$%$##&% %
'(&!%$$$)*#!! !(
 )$$
 $$
 +++  ,

+
 
,-++ 

+
+
,-++  

.%,%++/, (

+
  +
,-0 


+++  .%,%++/

, (
 ++ 
 

)$$
 $$
 +0 

+-  ++, -+ - 

+- (+- %  

 

 

chcase

Konstrukcja switchcase

Podejmowanie decyzji
Aplet 6.8. Zobaczmy, czy moemy wygra
z naszym apletem
+
,1/
+
,++++/
+
,,1/

+- 
,
 23
4

'5- 2" 3/

@"5'.


"5.2ING

- "5.G
0 3/

@"5'. ; 2 3/

 2@"5'.3/

+- 
,
+ 27+ 
3
4


 @J@5 5/

< 
+-/

 *203/

0
2+  @83
4

 < 2E
@
H

5 OG

N

++ PGD$G$3/

+  @8

0 /

 
4
 .=  !
  3
 , #K  L#
 -
   3
 , #CD, #
 -

case

++ "5'.


"5.28+ G

- "5.G
0 3/

++ "5'. ; 2 3/

 2++ "5'.3/

5. . = "




 
3

, 

#M N#

 -

 
!3

, 

#C E,#

 -

 
O3

, 

#8 #

 -

 3

, 

#&1?#
7

Konstrukcja switch

 I. - I. -J!


-  I. -& I. -#K  L#%
 I. -%"  !

5 "5'. ; 2 3/

 25 "5'.3/

Te trzy instrukcje tworz przycisk opcji


- K.-&  bdcy czci grupy
K.- . Klikajc ktrykolwiek
przycisk nalecy do tej grupy, spowodujesz,
e wszystkie pozostae przyciski z tej grupy
zostan wyczone. Pierwszym parametrem
metody K.-  " jest etykieta (nazwa
przycisku wypisana na ekranie), drugim
parametrem jest wspomniana grupa
przyciskw, jako trzeci parametr podajemy
stan przycisku ( lub  , zalenie
od tego, czy chcemy, by by na pocztku
wczony czy wyczony). Nastpnie
ustawiamy B ."
dla nowego przycisku opcji, co pozwoli
nam dalej przechwytywa zdarzenia
zwizane z przyciskiem za pomoc metody
* K. + ". Koczymy ten fragment
kodu, wstawiajc nasz przycisk opcji
w obszarze apletu.

JVON

  H     


B   


 @+-

2 32,:

 23
1
(3
F
/

*
0


*29  ?G
*'C G

3/
I. -J I. -
I. --  I. -&%=, I. -&%
  I. -&


+  @8

-/

< 
J@5 5/

4. - K.-& 


K.-  #M N#%
K.- %
 "
- K.-&  B ."
 - K.-& "

Podobnie jak we wczeniejszych


przykadach, uylimy generatora liczb
losowych Javy do przypadkowego wybrania
kamienia, noyc lub papieru przez nasz
aplet. W efekcie zmienna = 
zawiera liczb losow od 1 do 3. Teraz
instrukcja . " wybiera odpowiedni
blok kodu   w zalenoci od wartoci
zmiennej = . Powyszy fragment
moglibymy zapisa nastpujco:

105

Rozdzia 6.

= "


, 

#M N#
7



= !"


, 

#C E,#





Konstrukcja switchcase

I tak dalej, dla kadej moliwej wartoci.


6. .
, F=,- - .  5""


 
PMP3

= F=,- -





 -

 
PCP3

= F=,- -



!

 -

 
P8P3

= F=,- -



O

 -

 3

= F=,- -



5
7

W tym fragmencie kodu sprawdzamy


zmienn typu .  (podobny typ
do acucha, tyle e przechowujcy tylko
jeden znak), a nie, jak poprzednio, liczb.
Uytkownik dokonuje wyboru, klikajc
przycisk opcji, co wyzwala zdarzenie Javy.
Moemy odczyta etykiet kliknitego
przycisku i przypisa zmiennej
cakowitoliczbowej = F=,- -
odpowiedni warto w celu pniejszego
porwnania z wyborem apletu (zmienna
= ). Rysunek 6.14 prezentuje
widok apletu na pocztku gry. Rysunki 6.15,
6.16 i 6.17 prezentuj moliwe wyniki.
7. 

* K. + B9 
"



+*  "
  
K.- "


, F=,- -



K.- 

+*K.-  "+  "

Oto fragment kodu wyzwalany klikniciem


mysz przez uytkownika. Jeli obiektem
interakcji by przycisk opcji, zmiennej
, F=,- - przypisujemy etykiet
tego przycisku.

106

Aplet 6.8. Zobaczmy, czy moemy wygra z naszym


apletem cig dalszy
  M3
 , #7  #
 -
 " 3
 , #&1?#
9
 . ,E=,- - . 5!!
  NKN3
= E=,- - 
 -
  NCN3
= E=,- -  
 -
  N7N3
= E=,- - M
 -
 " 3
= E=,- - 5
9

0
2 @+-

 @J@5 53
4

 < 2?&:;<
%
@
 @@

@G
D$G
$3/

 
4

0
22 @J@5 5
QQ

 @+-(3
LL

2 @J@5 5D
QQ

 @+-3
LL

2 @J@5 5(
QQ

 @+-D33
4

 < 2BRP
BR


F
+-
F
G
D$G
$3/

 
4

 < 2BRSP
BR


F
+-
F
G
D$G
$3/

 < 2
@T
+ G

 S N
K
KG
D$G
$3/

6

 *  I. + B 8
 !
" + * !  "I. -!
 ,E=,- -  I. -
+ *   I. -! +   !

+ 23/

6
6

Podejmowanie decyzji
Wskazwki
 Instrukcja .D  moe by uywana

jedynie dla czterech typw prymityww:


,, . ,  i . . Wanie dlatego

w szstym kroku sprawdzamy jedynie


pierwsz liter zmiennej acuchowej
, F=,- - zamiast caego acucha.

Rysunek 6.14. Aplet jest gotowy do nowej gry

 Gdybymy pominli ktrkolwiek


instrukcj  - w powyszych blokach
 , przetwarzane byyby take nastpne
bloki  . Przerywanie wykonania
instrukcji .D  jest bardzo

przydatne, moe jednak by rdem


wielu bdw w oprogramowaniu.
Pamitaj wic o wstawianiu instrukcji
 - na kocu kadego bloku  .

Rysunek 6.15. Uytkownik wygra pierwsz gr

przetwarzany jest blok domylny


(rozpoczynajcy si od sowa  ).
Nawet kiedy jeste przekonany o tym,
e ktra z opcji musi zosta wybrana,
dla pewnoci uywaj bloku  .

Rysunek 6.16. W drugiej grze nastpi remis

Rysunek 6.17. Ostatni gr wygra komputer

107

Konstrukcja switchcase

 Jeli adna z wartoci wymienionych


w instrukcjach   nie pasuje do wzorca,

You might also like