Java SE – programowanie w NetBeans IDE
Zaj
ę
cia 2
WSM
Materiały tylko do u
ż
ytku wewn
ę
trznego.
Opracował:
Zbigniew JANIK ©
1
I
NSTRUKCJA DO
Ć
WICZENIA
2
I.
Standardowe wejście/wyjście: czytanie tekstu z klawiatury i wyświetlanie na ekranie monitora
1.
W środowisku NetBeans utwórz nowy projekt za pomocą polecenia menu File | New Project. W oknie dialogowym New Project
wybierz w panelu Categories: Java a w panelu Projects: Java Application. W oknie New Java Application nadaj projektowi
nazwę
Projekt2
a klasie głównej nazwę
WeWy
(nawiązującą do operacji wejścia/wyjścia tj. czytania danych i wyprowadzania
wyników). Jako miejsce docelowe projektu wybierz folder roboczy
G:\
(patrz: Zajęcia 1 pkt. IV.1-4).
2.
Na początku metody
main()
, pod nagłówkiem i po otwierającym nawiasie klamrowym kolejno:
a.
Wstaw komentarz
b.
Zadeklaruj 5-elementową, pustą tablicę o elementach typu całkowitego:
c.
Zadeklaruj zmienną całkowitą z wartością początkową określającą liczbę elementów tablicy instrukcją:
d.
Utwórz zmienną
s
klasy
String
nie przypisując jej żadnej wartości tekstowej:
e.
Utwórz pole reprezentujące czytnik buforowany, który będzie wczytywał z klawiatury pojedyncze wiersze tekstu:
(Do zmiennej
we
jest przypisany obiekt czytnika buforowanego utworzony konstruktorem
BufferedReader()
.
Parametrem jego konstruktora jest nienazwany obiekt klasy
InputStreamReader
czyli czytnik strumienia danych
wejściowych, podwiązany przez parametr konstruktora ze standardowym strumieniem wejścia systemu
System.in
)
f.
Użyj metody
System.out.print()
aby wyświetlić tekst:
"Wprowad
ź
swoje imi
ę
i nazwisko: "
.
3.
Wybierz polecenie Fix Imports z menu podręcznego, aby zaimportować odpowiednie klasy z pakietu
java.io
zasobów
bibliotecznych Javy. Klauzule importu pojawią się w początkowej części programu.
4.
Na początku metody
main()
, w celu wczytania wiersza tekstu z klawiatury (twojego imienia i nazwiska), wykorzystaj metodę
readLine()
obiektu
we
instrukcją:
Metoda
readLine()
jako operacja wejścia/wyjścia może generować błędy wykonania (wyjątki) klasy
IOException
, dlatego
pojawia się błąd kompilacji: "unreported exception java.io.IOException; must be caught or declared to be thrown".
5.
Kliknij w ikonę błędu na lewym marginesie okna edytora i z rozwijanej
listy wybierz drugą pozycję w celu otoczenia bieżącej instrukcji
odpowiednią instrukcją
try-catch
(rysunek obok).
6.
Usuń instrukcję wywołującą metodę
Logger.getlogger()
w części
catch
.
W tym miejscu wywołaj metodę
System.out.println()
tak, aby przy wystąpieniu wyjątku klasy
IOException
wyświetlać
tekst
"Bł
ą
d wej
ś
cia/wyj
ś
cia"
7.
Na końcu bloku
try
dopisz instrukcje:
a.
wyświetlającą tekst
"Podaj kolejno całkowite warto
ś
ci elementów tablicy tT"
b.
wprowadzające z klawiatury kolejne elementy tablicy
tT
, w tym celu wykonaj poniższe czynności
−
umieść kursor na końcu bloku
try
, w pustym wierszu,
−
naciśnij z klawiatury sekwencję klawiszy <Ctrl+spacja> (wywołanie wzorca szablonów)
−
wpisz
for
powinna pojawić się poniższa lista szablonów, z której wybierz tą podświetloną na niebiesko i naciśnij
<Enter>
−
usuń wygenerowaną instrukcję znajdującą się wewnątrz pętli for a na jej miejsce dopisz trzy poniższe:
Mamy tu instrukcję wczytania linii tekstu otoczoną dwiema instrukcjami, z których pierwsza wyświetli podpowiedz
dla użytkownika, a druga przekształci wczytany tekst na liczbę całkowitą i przypisze ją kolejnemu elementowi tablicy
8.
Na końcu instrukcji
try-catch
dodaj drugą część
catch
, która obsłuży wyjątek klasy
NumberFormatException
wyświetlając komunikat
"Niepoprawny format liczby"
i zatrzymaj działanie programu:
Java SE – programowanie w NetBeans IDE
Zaj
ę
cia 2
WSM
Materiały tylko do u
ż
ytku wewn
ę
trznego.
Opracował:
Zbigniew JANIK ©
2
9.
Uruchom program klawiszem <F6> lub ikoną na pasku narzędziowym. Kliknięciem przenieś kursor do okna
Output
i wypróbuj wpisywanie danych do tablicy.
10.
Na końcu metody
main()
za blokiem instrukcji
try-catch
dopisz samodzielnie instrukcje wyświetlające elementy tablicy
tT
w jednym wierszu poprzedzone informacją, kto wprowadzał dane Wykorzystaj do tego celu nową pętlę
for
. Wykonanie
programu powinno wyświetlić poniższy wydruk:
II.
Tworzenie tablicy o danych wartościach elementów; tablica dwuwymiarowa; dynamiczny rozmiar tablicy
1.
Na końcu metody
main()
wstaw komentarz
2.
Poniżej zadeklaruj drugą zmienną tablicową o nazwie
tV
, również o elementach całkowitych, równocześnie przypisując jej nowo
utworzoną tablicę o zadanych elementach:
3.
Następnie zmienną
m
typu
int
, podobnie jak w punkcie I.2.b przypisując jej liczbę elementów tablicy
tV
.
4.
Poniżej zadeklaruj w sposób dynamiczny dwuwymiarową zmienną tablicową
tW
o elementach całkowitych i wymiarach
n
x
m
:
5.
Poniżej umieść dwie zagnieżdżone pętle
for
, a w nich instrukcję wyliczającą elementy tablicy
tW
, jako iloczyny odpowiednich
elementów tablic
tT
oraz
tV
:
6.
Na końcu metody
main()
wpisz instrukcję wyświetlającą nagłówek
"Tablica dwuwymiarowa tW o ... wierszach i
... kolumnach"
. W miejscu kropek powinny się znaleźć wartości zmiennych
n
oraz
m
.
7.
Na końcu metody
main()
w nowych zagnieżdżonych pętlach
for
wpisz instrukcję wyświetlającą elementy i-tego wiersza
tablicy w oddzielone spacjami; aby przejść do nowej linii po zakończeniu wiersza, pod wewnętrzną pętlą
for
wywołaj metodę
println()
bez parametrów:
8.
Uruchom program, wpisz dane i zaobserwuj wyświetlone wyniki.
III.
Zapis wyników do pliku tekstowego
1.
Na końcu metody
main()
wstaw komentarz
2.
W celu zapisania do pliku zawartości tablicy wynikowej wykorzystamy klasę
FileWriter
z pakietu
java.io
; parametrem
jej konstruktora jest nazwa pliku. Aby utworzyć obiekt tej klasy, piszący do pliku o nazwie zadanej w programie, na końcu
metody main wpisz instrukcje:
3.
Zaimportuj klasę
FileWriter
klikając w ikonę ** i wybierając pierwszą pozycję z listy rozwijanej (możesz też użyć polecenia
Fix Imports lub skrótu <Ctrl+Shift+I>).
Java SE – programowanie w NetBeans IDE
Zaj
ę
cia 2
WSM
Materiały tylko do u
ż
ytku wewn
ę
trznego.
Opracował:
Zbigniew JANIK ©
3
4.
Analogicznie jak w pkt I.5, otocz instrukcje tworzącą obiekt
wy
blokiem
try-catch
, aby obsłużyć wyjątek klasy
IOException
. W przypadku przechwycenia wyjątku wyświetl komunikat:
"Nie mo
ż
na utworzy
ć
pliku
wyniki.txt"
umieszczając odpowiednią instrukcję w bloku
catch
.
5.
Na końcu bloku
try
wpisz instrukcję zapisującą do pliku nagłówek:
Metoda
write()
obiektu klasy
FileWriter
zapisuje do pliku łańcuch znaków podany, jako parametr.
6.
Na końcu bloku
try
dopisz instrukcje zapisujące do pliku elementy tablicy
tW
, w formacie podobnym do tego, jak miało to
miejsce w pkt. II.7. Elementy tablicy w wierszu powinny być oddzielone w tym przypadku znakiem tabulacji, a po zewnętrznej
pętli
for
umieść wywołanie metody zamykającej plik po zapisie wyników
7.
Uruchom program, wpisz dane i zaobserwuj wyświetlone wyniki. W oknie Files odszukaj i otwórz plik
wyniki.txt
w folderze
projektu, aby obejrzeć zapis wyników (możesz też posłużyć się w tym celu poleceniem menu File|Open File).
IV.
Instrukcja warunkowa if; zliczanie elementów tablicy
1.
Na końcu metody
main()
wstaw komentarz
2.
Zadeklaruj trzy zmienne całkowite
ld
,
lu
,
lz
, które posłużą, jako liczniki elementów tablicy; nadaj im wartości początkowe
zero:
3.
W zagnieżdżonych pętlach
for
umieść instrukcje warunkową
if
, która zliczy dodatnie elementy tablicy
tW
:
4.
Wpisz instrukcje dopisującą do pliku wynikowego
wyniki
.
txt
wiersz z tekstem
..." elementów dodatnich"
.
W miejscu kropek zapisz wartość zmiennej
ld
. W tym celu musisz ponownie otworzyć istniejący plik
wyniki
.
txt
do zapisu
z parametrem
true
, który pozwoli dopisać na końcu w istniejącym już pliku odpowiednią informację:
Pamiętaj o bloku
try-catch
. W przypadku przechwycenia wyjątku wyświetl komunikat:
"Nie znaleziono pliku -
wyniki.txt"
5.
Wyświetl również na ekranie, informacje o liczbie dodatnich elementów w tablicy
tW
.
6.
Aby zliczyć elementy ujemne i zerowe, podobnie jak w punkcie IV.3 dodaj instrukcje
if
warunkowo zwiększające wartości
liczników
lu
i
lz
, w warunkach zastosuj odpowiednie operatory porównania: symbol mniejszości
<
oraz symbol równości
==
(dwuznak).
7.
Dodaj instrukcje zapisujące wartości liczników
lu
oraz
lz
do pliku wynikowego, oraz wyświetl te informacje na ekranie
podobnie jak w punkcie IV.5.
8.
Pamiętaj o zamknięciu pliku
wyniki
.
txt
instrukcją
wy.close();
9.
Uruchom i wykonaj program; sprawdź zawartość pliku wynikowego
wyniki
.
txt
.
V.
Czytanie danych z pliku tekstowego; instrukcja if; porównywanie obiektów; instrukcja while
1.
Na końcu metody
main()
wstaw komentarz
2.
Wykonaj polecenie Format z menu podręcznego (lub użyj skrótu <Alt+Shift+F>), aby standardowo sformatować tekst źródłowy
programu.
3.
Na końcu metody
main()
wpisz wywołanie metody
System.out.print()
w celu wyświetlenia pytania pod adresem
użytkownika aplikacji:
"Czy chcesz wczyta
ć
dane z pliku? [TAK/NIE]"
4.
Poniżej jako pierwszą w części
try
, wpisz instrukcję wczytującą odpowiedź użytkownika do zmiennej
odp
klasy
String
:
5.
Poniżej wpisz instrukcję warunkową
if
, której blok wewnętrzny będzie wykonany, jeżeli użytkownik odpowie
TAK
:
Łańcuchy znaków są obiektami klasy
String
. Wszystkie obiekty Javy są wyposażone w metodę
equals()
, która zwraca
logiczną wartość
true
, jeżeli zachodzi równość z obiektem tej samej klasy podanym, jako parametr; w przeciwnym wypadku
zwracana jest wartość
false
.
Java SE – programowanie w NetBeans IDE
Zaj
ę
cia 2
WSM
Materiały tylko do u
ż
ytku wewn
ę
trznego.
Opracował:
Zbigniew JANIK ©
4
6.
Za komentarzem
// wczytaj dane z pliku
dopisz dwie instrukcje; jedna z nich wyświetla komunikat dla użytkownika,
druga czyta wpisaną z klawiatury nazwę pliku danych i dodaje do niej rozszerzenie właściwe dla plików tekstowych:
7.
Ze strony WWW dla przedmiotu skopiuj do foldera projektu
G:\Projekt2
dwa pliki z danymi o nazwach
dane1.txt
oraz
dane2.txt
i obejrzyj ich zawartość.
8.
Aby wczytać dane liczbowe z pliku tekstowego, posłużymy się klasą
Scanner
z pakietu
java.util
; parametrem konstruktora
Scanner()
jest nowo utworzony obiekt klasy
File
, reprezentujący plik o nazwie przypisanej do zmiennej
nazwaPliku
.
W kolejnym wierszu części
if
utwórz obiekt skanera i przypisz go do zmiennej o nazwie
sc
instrukcją:
9.
Dokonaj importu użytych klas Javy poleceniem Fix Imports lub skrótem <Ctrl+Shift+I>.
10.
W dalszym ciągu instrukcji
if
wyzeruj zmienną
n
, a następnie wpisz instrukcję iteracyjną
while
, a w niej użyj metody
nextInt()
obiektu
sc
klasy
Scanner
do wczytania kolejnych liczb całkowitych z pliku:
11.
Poniżej pętli
while
wywołaj metodę zamykającą przeczytany plik
sc.close()
;
W powyższym fragmencie programu (pkt.10) wykorzystaliśmy trzy metody obiektu
sc
klasy
Scanner
. Metoda
hasNextInt()
zwraca logiczną wartość
true
, jeżeli w pliku znajduje się kolejna liczba całkowita; w przeciwnym wypadku
zwracana jest wartość
false
. Metoda
nextInt()
zwraca kolejną liczbę całkowitą wczytaną z pliku. Metoda
close()
zamyka
plik czytany przez skaner. Dane wczytane z pliku są wyświetlane w jednym wierszu, oddzielone spacjami.
12.
Aby po wyświetleniu danych przejść do nowego wiersza, poniżej zamykającego nawiasu pętli
while
wywołaj metodę
System.out.println()
bez parametru.
13.
Uruchom program i sprawdź jego działanie, podając, jako nazwę pliku słowo
dane1
.
14.
Następnie uruchom go ponownie, podając niewłaściwą nazwę pliku. Wystąpi wyjątek klasy
IOException
. Ściślej biorąc jest to
wyjątek podklasy klasy
IOException
, o nazwie
FileNotFoundException
. Po końcu części
try
, jako pierwszą cześć
catch
dodaj obsługę klasy wyjątków
FileNotFoundException
:
15.
Przetestuj obsługę tego wyjątku, ponownie podając niewłaściwa nazwę pliku. Zwróć uwagę na użycie metody
getMessage()
,
która zwraca tekst komunikatu opisującego wyjątek
ex
.
16.
Uruchom program i podaj, jako nazwę pliku słowo
dane2
. Tym razem wystąpi błąd wykonania spowodowany znanym już
wyjątkiem o nazwie
ArrayIndexOutOfBounds
, ponieważ liczba wartości całkowitych zawartych w pliku
dane2.txt
przekracza rozmiar tablicy
tT
.
17.
Aby uwzględnić obsługę wyjątków tej klasy, utwórz nowa cześć
catch
i dopisz ją po wszystkich istniejących
catch
.
18.
Skompiluj i uruchom program i sprawdź jego działanie przy czytaniu z pliku
dane2
.
VI.
Projekt do samodzielnego wykonania – będzie sprawdzany na Zajęciach 3
1.
Skopiuj istniejący projekt
Projekt2
pod nową nazwę
Projekt2A
, klikając w oknie Projects nazwę projektu prawym przyciskiem
i wybierz z menu podręcznego opcję Copy…
2.
Zmień w nowy projekcie strukturę programu tak (zmień kolejność instrukcji i usuń zbędne), aby wystąpił w nim
tylko:
−
jeden blok instrukcji
try-catch
, ale z kilkoma częściami
catch
,
−
trzy pętle for, w tym tylko raz blok zagnieżdżonych (podwójnych) instrukcji
for
.
−
czterokrotnie instrukcja
if
−
jednokrotnie instrukcja
while
3.
Funkcjonalność programu nie powinna ulec zmianie, tzn. kolejność wykonywanych czynności, nadal powinny być zgodne
z instrukcją.