Lab03


Programowanie obiektowe /Java/
Laboratorium nr 3
1 Tablice
1 package pl.kielce.tu.lab3;
2
3 public class Tabs {
4
5 public static void main(String[] args) {
6 int[]tab1 = new int[3];
7 System.out.println("tab1.length = " + tab1.length + " tab1[0] = " + tab1[0]);
8 int []tab2 = {10, 20, 30};
9 System.out.println("tab2.length = " + tab2.length + " tab2[0] = " + tab2[0]);
10
11 String tab3[] = new String[3];
12 System.out.println("tab3.length = " + tab3.length + " tab3[0] = " + tab3[0]);
13 String tab4 [] = "Ala ma kota".split(" ");
14 System.out.println("tab4.length = " + tab4.length + " tab4[0] = " + tab4[0]);
15
16 boolean tab5[];
17 //System.out.println("tab5.length = " + tab5.length); // Błąd
18 //tab5 = {true, false, true}; // Błąd
19 tab5 = new boolean [3];
20 //System.out.println("tab5[4] = " + tab5[4]); // Wyjątek
21 }
22 }
Przykład 1: src/pl/kielce/tu/lab3/Tabs.java {link}
2 Operatory
1 package pl.kielce.tu.lab3;
2
3 import java.util.Random;
4
5 public class Operators {
6
7 private static void test1() {
8 //Opertatory jednoargumentowe (-) i (+)
9 int i = 1;
10 i += +i;
11 i -= -i;
12 System.out.println("i = " + i);
13 }
14
15 private static void test2() {
16 //Operatory inkrementacji (++) i dekrementacji (--)
17 int j = 0;
18 System.out.println("j++ = 0 " + (j++ == 0));
19 j = 0;
20 System.out.println("++j = 0 " + (++j == 0));
21 }
22
23 private static void test3() {
24 //Operatory relacji <, <=, ==, != >=, >
1
25 int i1 = 0;
26 int i2 = 0;
27 System.out.println("i1 = i2 " + (i1 == i2));
28
29 Integer j1 = new Integer(0);
30 Integer j2 = new Integer(0);
31 System.out.println("j1 = j2 " + (j1 == j2));
32 System.out.println("j1.equals(j2) " + (j1.equals(j2)));
33
34 String s1 = "Ala ma kota";
35 String s2 = "Ala ma kota";
36 System.out.println("s1 = s2 " + (s1 == s2));
37 System.out.println("s1.equals(s2) " + (s1.equals(s2)));
38
39 String s3 = new String("Ala ma kota");
40 String s4 = new String("Ala ma kota");
41 System.out.println("s3 = s4 " + (s3 == s4));
42 System.out.println("s3.equals(s4) " + (s3.equals(s4)));
43 }
44
45 private static void test4() {
46 //Operatory logiczne: &&, ||, ! (negacja)
47 int n = 1;
48 // System.out.println("!n " + !n); //Błąd
49 System.out.println("true && true " + (true && true));
50 System.out.println("true || true " + (true || true));
51 System.out.println("! true " + (!true));
52 }
53
54 private static boolean print() {
55 return false;
56 }
57
58 private static void test5() {
59 //Skracanie obliczeń wyrażenia logicznego
60 System.out.println("Test 1 Początek");
61 boolean t2 = print() && false;
62 System.out.println("Test 1 Koniec");
63 System.out.println("Test 2 Początek");
64 boolean t1 = false && print();
65 System.out.println("Test 2 Koniec");
66 }
67
68 private static void test6() {
69 //Operatory bitowe: &, |, ^, ~ (negacja)
70 int m1 = 0x14;
71 int m2 = 014;
72 int m3 = 14;
73 System.out.println("0x14 = " + m1);
74 System.out.println(" 014 = " + m2);
75 System.out.println(" 14 = " + m3);
76 System.out.println("m1 & m2 = " + (m1 & m2));
77 System.out.println("m1 | m2 = " + (m1 | m2));
78 System.out.println("m1 ^ m2 = " + (m1 ^ m2));
79 System.out.println("~m1 = " + (~m2));
80 }
81
82 private static void test7() {
83 //Operatory przesunięć >>, >>>, <<
84 int s1 = 4;
85 int s2 = -4;
86 System.out.println("s1 >> 1 = " + (s1 >> 1) + " s2 >> 1 = " + (s2 >> 1));
2
87 System.out.println("s1 >>> 1 = " + (s1 >>> 1) + " s2 >>> 1 = " + (s2 >>> 1));
88 System.out.println("s1 << 1 = " + (s1 << 1) + " s2 << 1 = " + (s2 << 1));
89 }
90
91 private static void test8() {
92 //Operatory trójargumentowy if-else
93 Random r = new Random(); // Generator liczb losowych
94 int i = r.nextInt();
95 int signum = i > 0 ? 1 : (i < 0 ? -1 : 0); // Nawiasy można pominąć
96 System.out.println("signum " + i + " = " + signum);
97 }
98
99 private static void test9() {
100 //Operatory rzutowania
101 int ci = 1;
102 long cl = 1L;
103 // ci = cl; // Błąd
104 ci = (int) cl;
105 cl = ci;
106
107 float cf = 100f;
108 double cd = 10e2d;
109 System.out.println(" 100.0f = " + cf);
110 System.out.println("10.0e2d = " + cd);
111 // cf = cd; // Błąd
112 cf = (float) cd;
113 cd = cf;
114 }
115
116 public static void main(String[] args) {
117 test1();
118 test2();
119 test3();
120 test4();
121 test5();
122 test6();
123 test7();
124 test8();
125 test9();
126 }
127 }
Przykład 2: src/pl/kielce/tu/lab3/Operators.java {link}
Dla typów prostych operator relacji (== lub ! =) działa na zasadzie porównywania wartości zmiennych.
Dla obiektów operator relacji (== lub ! =) działa na zasadzie porównywania referencji. Równoważność
obiektów można sprawdzić wywołując funkcję equals().
3 Instrukcje sterujące
1 package pl.kielce.tu.lab3;
2
3 import java.util.Random;
4
5 public class Instructions {
6
7 private static void test1() {
8 //Instrukcja warunkowa if-else
9 boolean wyrazenie_logicze = false;
10 if(wyrazenie_logicze)
3
11 System.out.println("1) wyrazenie_logicze = true");
12 if(wyrazenie_logicze);
13 System.out.println("2) wyrazenie_logicze = true");
14 if(wyrazenie_logicze)
15 System.out.println("3) wyrazenie_logicze = true");
16 else
17 System.out.println("3) wyrazenie_logicze = false");
18 }
19
20 private static void test2() {
21 //Instrukcja wielokrotnego wyboru switch
22 int rokStudiow = 1;
23 switch(rokStudiow){
24 case 1:
25 case 2:
26 case 3:
27 System.out.println("Studia I stopnia");
28 break;
29 case 4:
30 case 5:
31 System.out.println("Studia II stopnia");
32 break;
33 default:
34 System.out.println("Pomylka");
35 }
36 }
37
38 private static void test3() {
39 //Pętla while, do-while, for, "foreach", "forever"
40 int h = 5;
41 while(h < 3){
42 System.out.println("1) h = " + h);
43 h++;
44 }
45
46 h = 5;
47 do{
48 System.out.println("2) h = " + h);
49 h++;
50 }while(h < 3);
51
52 int g[] = {10, 20, 30};
53 for(int c = 0; c < g.length; c++, c--, c++)
54 System.out.println("g[" + c + "] = " + g[c]);
55
56 for (int x : g)
57 System.out.println(x);
58
59 //for(;;)
60 // System.out.println("Nieskończona pętla");
61 }
62
63 private static void test4() {
64 zewnetrznaPetla: for (int v = 0; v < 10; v++){
65 wewnetrznaPetla: for (int w = 0; w < 2; w++){
66 System.out.println("v = " + v + " w = " + w);
67 switch(v){
68 case 0:
69 System.out.println("continue");
70 continue;
71 case 1:
72 System.out.println("break");
4
73 break;
74 case 2:
75 System.out.println("continue wewnetrznaPetla");
76 continue wewnetrznaPetla;
77 case 3:
78 System.out.println("break wewnetrznaPetla");
79 break wewnetrznaPetla;
80 case 5:
81 System.out.println("continue zewnetrznaPetla");
82 continue zewnetrznaPetla;
83 case 6:
84 System.out.println("break zewnetrznaPetla");
85 break zewnetrznaPetla;
86 }
87 }
88 }
89 }
90
91 public static void main(String[] args) {
92 test1();
93 test2();
94 test3();
95 test4();
96 }
97 }
Przykład 3: src/pl/kielce/tu/lab3/Instructions.java {link}
Instrukcja break powoduje wyjście z bieżącej pętli. Instrukcja continue powoduje pominięcie reszty bie-
żącej pętli i rozpoczęcie kolejnej iteracji. Etykieta jest to identyfikator po którym następuje dwukropek np.
Label :. Etykieta może wystąpić tylko przed instrukcją iteracji. Instrukcja continue Label przerywa wszyst-
kie pętle do poziomu etykiety Label. Następnie pętla poziomu etykiety Label jest kontynuowana. Instrukcja
break Label przerywa wszystkie pętle do poziomu etykiety Label. Pętla poziomu etykiety Label także jest
przerywana.
4 Formatowanie tekstów
2 2
- b2 , B2  jeżeli argument ma wartość null to wynikiem jest  false , jeżeli jako argument została przeka-
zana zmienna boolean lub Boolean to wynikiem jest tekst zwrócony przez String.valueOf(), w innym
przypadku wynikiem jest  true ,
2 2
- h2 , H2  jeżeli argument ma wartość null to wynikiem jest  null , w innym przypadku jest to wynik
wywołania Integer.toHexString(arg.hashCode()),
2 2
- s2 , S2  jeżeli argument ma wartość null to wynikiem jest  null , jeżeli argument implementuje
F ormattable, to dla argumentu wywoływana jest metoda formatT o, w innym przypadku wynikiem
jest tekst zwrócony przez arg.toString(),
2 2
- c2 , C2  znak Unicode (*),
2
- d2  liczba w formacie dziesiętnym (**),
2
- o2  liczba w formacie ósemkowym (**),
2 2
- x2 , X2  liczba w formacie szesnastkowym (**),
2 2
- e2 , E2  liczba dziesiętna w zapisie naukowym (***),
2
- f2  liczba dziesiętna (***),
2
- n2  zależny od platformy znak nowej linii.
Oznaczenia:
5
* dotyczy char, Character, byte, Byte, short, Short oraz int and Integer pod warunkiem, że metoda
Character.isV alidCodeP oint(int) zwraca true,
** dotyczy byte, Byte, short, Short, int, Integer, long, Long, oraz BigInteger,
*** dotyczy float, F loat, double, Double, oraz BigDecimal.
1 package pl.kielce.tu.lab3;
2
3 public class Formats {
4
5 public static void main(String[] args) {
6 int x = 123;
7 String s = String.format("dec %d %n", x);
8 s += String.format("oct %o %n", x);
9 s += String.format("hex %x %n", x);
10 System.out.print(s);
11
12 System.out.printf("dec %4d %n", x);
13 System.out.printf("oct %8o %n", x);
14 System.out.printf("hex %12x %n", x);
15 }
16 }
Przykład 4: src/pl/kielce/tu/lab3/Formats.java {link}
Szczegóły dotyczące formatowania można znalezć:
http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html
5 Wyrażenia regularne
Klasy znaków:
[abc]  a, b, lub c,
['"abc]  wszystkie znaki poza a, b oraz c,
[a - cA - c]  znaki od a do c oraz od A do C,
[a - k&&[i - z]]  i, j oraz k (część wspólna).
Predefiniowane klasy znaków:
. (kropka)  dowolny znak,
\d  cyfra [0 - 9],
\D  inny znak poza cyfrą ['"0 - 9],
\s  biały znak [\t\n\x0B\f\r],
\S  inny znak poza białym znakiem ['"\s],
\w  litera mała, duża lub cyfra [a - zA - Z0 - 9],
\W  inny znak poza literą mała, dużą lub cyfrą ['"\w],
W zmiennych typu String symbol \ musi zostać zastąpiony przez \\.
Znaki dotyczące zakotwiczenia:
'"
- początek linii,
\$  koniec linii,
\b  granica słowa,
\B  przeciwieństwo granicy słowa.
Zachłanny kwantyfikator (ang. greedy)  dopasowuje maksymalny, możliwy fragment ciągu do wzorca.
Niechętny kwantyfikator (ang. reluctant)  dopasowuje minimalny, konieczny fragment ciągu do wzorca.
W tabeli podana jest liczba wystąpień X.
W przykładzie 5 pokazany został sposób sprawdzenia czy wprowadzony tekst jest zgodny z podanym
wyrażeniem regularnym:
6
Zachłanny Niechętny
Raz lub wcale X? X??
Zero lub więcej razy X* X*?
Raz lub więcej razy X+ X+?
Dokładnie n razy X{n} X{n}?
Co najmniej n razy X{n,} X{n,}?
Co najmniej n razy, ale nie więcej niż m razy X{n,m} X{n,m}?
1 package pl.kielce.tu.lab3;
2
3 import java.util.regex.Matcher;
4 import java.util.regex.Pattern;
5
6 public class Regs {
7
8 public static void main(String[] args) {
9 Pattern p = Pattern.compile("\\d{2}-\\d{3}");
10 String s = "25-900";
11 Matcher m = p.matcher(s);
12 System.out.println("Pattern (" + p + " matches " + s + ": " + m.matches());
13 }
14 }
Przykład 5: src/pl/kielce/tu/lab3/Regs.java {link}
Szczegóły dotyczące wyrażeń regularnych można znalezć:
http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
6 Przykładowa treść laboratorium
Proszę stworzyć oraz uruchomić aplikację zgodną ze specyfikacją podaną przez prowadzącego np. spraw-
dzającą czy tekst jest zgodny z podanym wyrażeniem regularnym.
7


Wyszukiwarka

Podobne podstrony:
LAB03
sop 2009 lab03
Inf Lab03
lab03 08
so lab03
java lab03 initialization
AiP Lab03
Lab03 Switched LANs
LAB03 OINS Turek Kalmus Lewandowski
Inf Lab03 DODATEK NWD
MetNum Lab03
Inf Lab03
ADINA84 4rok Lab03
access st2008z lab03 relacje normalizacja

więcej podobnych podstron