Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdEsmée Driessen Laatst gewijzigd meer dan 9 jaar geleden
1
Hoofdstuk 11 Strings en arrays
2
TextArea en String class LetterTeller extends Applet { void init ( ) { invoer = new TextArea (5, 40); uitvoer = new TextField(40); knop = new Button(“Tel”); this.add(invoer); this.add(uitvoer); this.add(knop); knop.addActionListener(this); } TextArea invoer; TextField uitvoer; Button knop; implements ActionListener
3
TextArea en String class LetterTeller extends Applet { void actionPerformed ( ActionEvent e ) { String s; int n; s = invoer.getText (); n = s.length (); uitvoer.setText ( “u heeft ” + n + “ tekens getikt” ); } TextArea invoer; TextField uitvoer; Button knop; implements ActionListener
4
String-methodes nint length( ) nbooleanequals(String s) nStringconcat(String s) nStringsubstring(int start) nStringsubstring(int start, int eind) nStringtoUpperCase( ) nStringtoLowerCase( )
5
concat en substring nString s, t, u, v, w; ns = “ham”; nt = “burger”; nu = s.concat(t); nv = u.substring(3); nw = u.substring(3, 7); s t u v w hamburger hamburger burger burg hamburger 012345678 s + t ; “van en met” “tot en zonder”
6
Publieksvraag nSchrijf een methode beginstuk met twee String-parameters x en y die bepaalt of x het beginstuk van y is nSchrijf een methode onderdeel met twee String-parameters x en y die bepaalt of x ergens als substring van y voorkomt
7
Methode beginstuk (String x, String y)booleanprivate static kortlang {}{} y. substring(0, x.length() ) x. equals ( ) return ; beginstuk
8
Methode onderdeel (String x, String y)booleanprivate static {}{} onderdeel y. substring(t)this. beginstuk(x, ) if ( ) return true; for (t=0; t<y.length(); t++) return false; int t;
9
Meer String-methodes nbooleanstartsWith(String s) nbooleanendsWith(String s) nintindexOf(String s) private static boolean onderdeel(String x, String y) { return y.indexOf(x)>=0 ; }
10
Losse letters nStringsubstring(int begin, int eind) String voorletter; voorletter = s. substring(0,1); ncharcharAt(int positie) char eerste; eerste = s. charAt(0);
11
Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nboolean waarheidswaarden false, true nchar losse symbolen’A’, ’B’, ’Z’, ’a’, ’4’, ’#’, ’:’
12
Publieksvraag n//schrijf een static methode die telt hoe // vaak een symbool voorkomt in een String n//voorbeeld-aanroep: int n; n = Demo. freq(’e’, ”some text” ); n// hint: gebruik een for opdracht
13
Tel symbool-frequentie private static int freq(char x, String s) { s.charAt(t)==x for (t=0; t<s.length(); t++) if ( ) aantal++; int aantal; aantal = 0; return aantal; }
14
IBM/DOS Geschiedenis van char n1970s:6 bits = 64 symbols 26 letters, 10 digits, 28 leestekens n1980s: 7 bits = 128 symbols +26 lowercase, +5 leestekens, 33 control n1990s: 8 bits = 256 symbols +letters met accenten n2000s: 16 bits = 65536 symbols +Grieks, Cyrillisch, Japans, Devangari,... ASCII ANSI/ISO Unicode
15
Character coding code 0 code 127 code 48 code 32 code 65 code 97
16
char bijzonderheden nalfabetisch geordend char c; if ( ’A’<=c && c<=’Z’ ) … nconverteerbaar naar int int n; n = c + 32; nen terug c = (char) n;
17
Conversies nConversie naar “grotere” waarde kan altijd double d; int n; d = n; int n; char c; n = c; Component x; Button b; x = b; nConversie naar “kleinere” waarde is gevaarlijk n = (int) d;c = (char) n;b = (Button) x;
18
twee tekens in de broncode, toch één character! Speciale char-waarden nLetterlijk symbool nSpeciaal symbool nHet quote-symbool nHet backslash-symbool ’A’ ’\n’ ’\’’ ’\\’ ’&’ ’\t’ ’\”’
19
Woorden tellen void actionPerformed ( ActionEvent e ) { String s; int n; s = invoer.getText (); } n = s.length (); uitvoer.setText ( “u heeft ” + n + “ tekens getikt” ); uitvoer.setText ( “u heeft ” + w + “ woorden getikt” + “op ” + r + “ regels” ); if (s. charAt(t)==‘ ’) w++; for ( t=0; t<s.length(); t++ ) if (s. charAt(t)==‘\n’) { r++; w++; } {}{} w = 0; r = 0; int w, r, t;
20
String versus char nStringchar nklasseprimitief type nobject-verwijzingdirecte waarde nnul, een of meer…precies één symbool n“” “A” “hello” ’A’ nmethodenoperatoren uequals== uconcat< usubstring+
21
Arrays nArray: rij genummerde variabelen tabel 0 1 2 3 4 length5 int [ ] tabel; new int [5];tabel = declaratie van een array creëren van het eigenlijke array-object
22
Gebruik van een array n’t zijn echte variabelen: tabel 0 1 2 3 4 length5 tabel [2] = 37; x = tabel [2] + 5; 37 x 42 if (tabel.length<10)... tabel.length = 10; echter de lengte mag je niet wijzigen
23
Gebruik van een array nvariabele als index in de array tabel 0 1 2 3 4 length5 tabel [0] = 0; tabel [1] = 0; tabel [2] = 0; tabel [3] = 0; tabel [4] = 0; 0 0 0 0 0 tabel [t] = 0; for (t=0; t<5; t++)
24
Cirkelklikker class Cirkelklikker extends Applet { public void paint(Graphics g) { g.fillOval(x-5, y-5, 10, 10); } public void mousePressed(MouseEvent e) { x = e.getX( ); y = e.getY( ); this.repaint( ); } public void init( ) { this.addMouseListener(this); impl ML int x, y;
25
Cirkelklikker class Cirkelklikker extends Applet { public void paint(Graphics g) { g.fillOval(x[t]-5, y[t]-5, 10, 10); } public void init( ) { this.addMouseListener(this); impl ML int x, y; for (int t=0; t<n; t++) public void mousePressed(MouseEvent e) { x = e.getX( ); y = e.getY( ); this.repaint( ); } int n=0; n++;
26
Cirkelklikker class Cirkelklikker extends Applet { public void paint(Graphics g) { g.fillOval(x[t]-5, y[t]-5, 10, 10); } public void init( ) { this.addMouseListener(this); impl ML int x, y; for (int t=0; t<n; t++) public void mousePressed(MouseEvent e) { x[n] = e.getX( ); y[n] = e.getY( ); this.repaint( ); } n++; int [ ] x, y; x = new int[100]; y = new int[100]; int n=0;
27
Toepassing: lettertel-programma gebruiker tikt tekst in... drukt op de knop... en het programma bepaalt alle letter-frequenties
28
User-interface public class Tekst extends Applet implements ActionListener { TextArea invoer, uitvoer; Button knop; public void init () { invoer = new TextArea( 5, 30); uitvoer = new TextArea(28, 20); knop = new Button(“tel letters”); uitvoer. setEditable (false); this.add(invoer); this.add(knop); this.add(uitvoer); knop.setActionListener (this); }
29
Tel de spaties en regels void actionPerformed ( ActionEvent e ) { String s; int w,r,t; s = invoer.getText (); w=0; r=0; for (t=0; y<s.length(); t++) { if ( s.charAt(t)==‘ ’) w++; if (s.charAt(t)==‘\n’) r++; } uitvoer.setText( (w+r) + “ woorden op ” + + r + “ regels” ); } het eigenlijke telwerk input output & layout
30
Aparte klasse voor het telwerk class Tellers { } int r, w; Tellers() { r=0; w=0; } void turf (String s) { int t; for (t=0; t<s.length; t++)....r++....w++.... } String toString ( ) { return (w+r) + “ woorden op ” + r + “ regels”; }
31
Gebruik van de klasse void actionPerformed(ActionEvent e) { } Tellers t; t = new Tellers(); t. turf ( invoer.getText() ); uitvoer. setText ( t.toString() );
32
De klasse TurfTab public class TurfTab { int [ ] tellers; int totaal; public TurfTab ( ){... } public void turf (String s){... } public String toString ( ) {... } private void turf (char c){... } } klasse-ontwerp: wat is... & wat kan... & hoe?
33
De klasse TurfTab public class TurfTab { int [ ] tellers; int totaal; public TurfTab ( ) { } tellers = new int [26]; } for (int t=0; t<26; t++) tellers [t] = 0; public void turf (String s) { } turf (s.charAt(t)); for (int t=0; t<s.length(); t++)
34
De klasse TurfTab public class TurfTab { int [ ] tellers; int totaal; public void turf (char c) { } tellers [ ] ++; totaal++; } if (c>=‘A’ && c<=‘Z’) { } c - ‘A’ if (c>=‘a’ && c<=‘z’) { tellers [ c - ‘a’ ] ++; totaal++; }
35
t + “:” + tellers[t] + “keer\n” ; De klasse TurfTab public class TurfTab { int [ ] tellers; int totaal; public String toString( ) { } } String result; return result; result = “”; result += for (int t=0; t<26; t++) result += “totaal:” + totaal; ( + ‘A’)(char)
36
Array als parameter tabel 0 1 2 3 4 length5 12 95 11 23 15 int kleinste ( int [ ] tabel ) { } int resultaat; return resultaat; if (tabel [t] < resultaat) resultaat = tabel [t]; for (int t=0; t<tabel.length; t++) resultaat =tabel [0];
37
Samenvatting nArray: rij genummerde variabelen int [ ] tabel; tabel = new int [10]; tabel [x] = v;
38
Gebruik van arrays tabel 0 1 2 3 4 length5 12 95 11 23 15 int kleinste ( int [ ] tabel ) { } int resultaat; return resultaat; if (tabel [t] < resultaat) resultaat = tabel [t]; for (int t=0; t<tabel.length; t++) resultaat =tabel [0];
39
String-methodes nint length( ) nbooleanequals(String s) nStringconcat(String s) nStringsubstring(int start) nStringsubstring(int start, int eind) nStringtoUpperCase( ) nStringtoLowerCase( )
40
Overzicht programma- constructies Opdrachten nToekenning nAanroep void-methode nreturn-opdracht nwhile-opdracht nfor-opdracht n{... } - bundeling Expressies n Constante n Variabele n Aanroep methode n Expressie met operatoren n Expressie met haakjes n new-expressie kun je doen kun je uitrekenen nif-else-opdracht ntry-catch-opdracht nbreak-opdracht ncast nthis null nArray-indicering a[t]
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.