Sunteți pe pagina 1din 155

2003 Prentice Hall, Inc. Todos los derechos reservados.

Captulo 11 - Cuerdas y Personajes


Contorno
11.1 Introduccin
11.2 Fundamentos de caracteres y cadenas
11.3 Clase Cadena
11.3.1 Cuerda Constructores
11.3.2 Mtodos de Cuerda longitud, charAt y getChars
11.3.3 Strings Comparar
11.3.4 Localizacin de caracteres y subcadenas en Cuerdas
11.3.5 Extraccin Subcadenas de Cuerdas
11.3.6 concatenar cadenas
11.3.7 Varios Mtodos de Cuerda
11.3.8 Cadena Mtodo valueOf

11.4 Clase StringBuffer


11.4.1 StringBuffer Constructores
11.4.2 Mtodos StringBuffer longitud, capacidad, setLength y ensureCapacity
11.4.3 StringBuffer Mtodos charAt, setCharAt, getChars y reversa

2003 Prentice Hall, Inc. Todos los derechos reservados.

Captulo 11 - Cuerdas y Personajes


11.4.4 StringBuffer anexar Mtodos
11.4.5 StringBuffer Insercin y Mtodos de eliminacin
11.5 Clase Personajes
11.6 Clase StringTokenizer
11.7 Tarjeta de barajar y repartir Simulacin
11.8 Expresiones regulares, patrn del grupo y Matcher
11.9 (Ejemplo prctico opcional) Acerca de los objetos: Manipulacin Evento

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.1 Introduccin
Cadena y el carcter de proceso
Clase java.lang.String
Clase java.lang.StringBuffer
Clase java.lang.Character
Clase java.util.StringTokenizer

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.2 Fundamentos de caracteres y cadenas


Personajes
"Bloques" de los programas de cdigo Java

Cadena
Series de caracteres tratado como sola unidad

Puede incluir letras, nmeros, etc.


Objeto de la clase String

11.3.1 Cuerda Constructores


Clase String
Proporciona nueve constructores

2003 Prentice Hall, Inc. Todos los derechos reservados.

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringConstructors.java

Lnea 17

Lnea 18

Lnea 19

Lnea 20

Lnea 21

Lnea 22
1 // Fig. 11.1: StringConstructors.java
2 constructores de clase // cadena.
3 javax.swing importacin. *;
4
5 pblica StringConstructors clase {
6

pblico esttico void main (String args [])

8{
9
10

Char charArray [] = {'b', 'i', 'r', 't', 'h', '', 'd', 'a', 'y'};
bytes ByteArray [] = {(byte) 'n', (byte) e,

11 (byte) 'w', (byte) '', (byte) 'y',


12 (byte) 'e', (byte) 'a', (byte) 'r'};
13
14 Cadena s = new String ("hola");
15
16

// constructores uso de Cuerda

17 s1 String = new String ();


18 s2 String = new String (s);
19 s3 String = new String (charArray);

20 s4 String = new String (charArray, 6, 3);


21 s5 String = new String (ByteArray, 4, 4);
22 s6 String = new String (ByteArray);

Constructor copia byte-array subconjunto


Constructor copias matriz de bytes
Constructor copias carcter conjunto de subconjuntos
Constructor copias array de caracteres
Copias Constructor Cadena
Constructor por defecto Cadena instancia cadena vaca

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringConstructors.java
23

24

// Anexar Cuerdas de salida

25 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3 +
26

"\ Ns4 =" + s4 + "\ NS5 =" + s5 + "\ NS6 =" + s6;

27
28 JOptionPane.showMessageDialog (null, la produccin,
29

"String Clase de constructores", JOptionPane.INFORMATION_MESSAGE);

30
31 System.exit (0);
32}
33
34} // fin de la clase StringConstructors

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.2 Mtodos de Cuerda longitud, charAt y getChars

Longitud Mtodo
Determinacin de la longitud de cuerda

Al igual que las matrices, cadena s siempre "sabe" su tamao

A diferencia de array, string s no tienen longitud variable de

instancia

Mtodo charAt
Obtn carcter en la ubicacin especfica en Cadena

GetChars Mtodo
Obtener todo el conjunto de caracteres en cadena
2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno
StringMiscellaneous.java

Lnea 16

Lnea 21
1 // Fig. 11.2: StringMiscellaneous.java
2 // Este programa demuestra la longitud, charAt y getChars
3 // mtodos de la clase String.
4 javax.swing importacin. *;
5
6 pblica clase StringMiscellaneous {
7
8

pblico esttico void main (String args [])

9{
10 Cadena s1 = "hola";
11

Char charArray [] = new char [5];

12
13 String salida = "s1:" + s1;
14
15

// Mtodo de longitud de la prueba

16 salida + = "\ nLongitud de s1:" + s1.length ();


17
18

// Bucle a travs de personajes de s1 y visualizador revirti

19 salida + = "cadena \ nEl invertido es:";


20
21

for (int cuenta = s1.length () - 1; contar> = 0; count--)

22 salida + = s1.charAt (recuento) + "";

Determinar el nmero de caracteres en cadena s1


Anexar caracteres de s1 en orden inverso a la salida de cuerda

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringMiscellaneous.java

Lnea 25
23
24

// Copiar los caracteres de cadena en charArray

25 s1.getChars (0, 5, charArray, 0);


26 salida + = "\ nLa matriz de caracteres es:";
27
28

for (int cuenta = 0; contador <charArray.length; contar ++)

29 salida + = charArray [contar];


30

31 JOptionPane.showMessageDialog (null, la produccin,


32

"Cuerda mtodos de manipulacin de carcter de clase",

33

JOptionPane.INFORMATION_MESSAGE);

34
35 System.exit (0);
36}
37
38} // fin de la clase StringMiscellaneous

Copie los caracteres (algunos de) de s1 a charArray

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.3 Strings Comparar


La comparacin de objetos String
Mtodo es igual

Mtodo equalsIgnoreCase
Mtodo compareTo
RegionMatches Mtodo

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringCompare.java

Lnea 18

Lnea 24
1 // Fig. 11.3: StringCompare.java
2 // mtodos de Cuerda es igual, equalsIgnoreCase, compareTo y regionMatches.
Javax.swing.JOptionPane 3 de importacin;

4
5 pblica clase StringCompare {
6
7

pblico esttico void main (String args [])

8{
9 s1 String = new String ("hola"); // s1 es una copia de "hola"
10 Cadena s2 = "adis";
11 Cadena s3 = "feliz cumpleaos";
12 s4 String = "feliz cumpleaos";
13
14 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3 +
15
16

"\ Ns4 =" + s4 + "\ n \ n";

17

// Prueba para la igualdad

18

if (s1.equals ("hola")) // true

19 salida + = "s1 es igual a \" hola \ "\ n";


20

ms

21 salida + = "s1 no es igual a \" hola \ "\ n";


22
23

// Prueba para la igualdad con ==

24

si (s1 == "hola") // false; que no son el mismo objeto

25 salida + = "s1 es igual a \" hola \ "\ n";


26

ms

27 salida + = "s1 no es igual a \" hola \ "\ n";

Mtodo es igual a las pruebas de dos objetos para la igualdad mediante la comparacin lexicogrfica
Operador de igualdad (==) pruebas si ambas referencias se refieren al mismo objeto en la memoria

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringCompare.java

Lnea 30

Lneas 36-40

Lnea 43 y 49
28
29

// Prueba para la igualdad (ignorar caso)

30

si (s3.equalsIgnoreCase (s4)) // true

31 salida + = "s3 s4 es igual \ n";

32

ms

33 salida + = "s3 no es igual s4 \ n";


34
35

// CompareTo prueba

36 salida + = "\ ns1.compareTo (s2) es" + s1.compareTo (s2) +


37

"\ Ns2.compareTo (s1) es" + s2.compareTo (s1) +

38

"\ Ns1.compareTo (s1) es" + s1.compareTo (s1) +

39

"\ Ns3.compareTo (s4) es" + s3.compareTo (s4) +

40

"\ Ns4.compareTo (s3) es" + s4.compareTo (s3) + "\ n \ n";

41
42

// RegionMatches prueba (maysculas y minsculas)

43

if (s3.regionMatches (0, s4, 0, 5))

44 de salida + = "Primeros 5 caracteres del partido s3 y s4 \ n";

45

ms

46 salida + = "Primeros 5 caracteres de s3 y s4 no coinciden \ n";


47
48

// regionMatches prueba (ignorar caso)

49

si (s3.regionMatches (verdadero, 0, s4, 0, 5))

50 salida + = "Primeros 5 caracteres del partido s3 y s4";


51

ms

52 de salida + = "Primeros 5 caracteres de s3 y s4 no coinciden";

Prueba de dos objetos para la igualdad, pero ignorar el caso de las letras en Cuerdas
Mtodo compareTo compara objetos String

Mtodo regionMatches compara porciones de dos objetos String para la igualdad


2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno

StringCompare.java
53
54 JOptionPane.showMessageDialog (null, la produccin,
55

"comparaciones de cadenas", JOptionPane.INFORMATION_MESSAGE);

56
57 System.exit (0);
58}
59

60} // fin de la clase StringCompare

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno

StringStartEnd.java

Lnea 15

Lnea 24
1 // Fig. 11.4: StringStartEnd.java
2 // mtodos de Cuerda startsWith y endsWith.
3 javax.swing importacin. *;
4
5 pblica clase StringStartEnd {
6
7

pblico esttico void main (String args [])

8{
9 cadenas String [] = {"empezaron", "a partir de", "termin", "final"};

10 String salida = "";


11
12

// Mtodo de ensayo startsWith

13

for (int cuenta = 0; contador <strings.length; contar ++)

14
15

si (cuerdas [count] .startsWith ("c"))

16 de salida + = "+ cuerdas" \ "[cuenta] +" \ "comienza con \" c \ "\ n";
17
18 salida + = "\ n";
19
20

// Mtodo de prueba startsWith partir de la posicin

21

// 2 de la cadena

22

for (int cuenta = 0; contador <strings.length; contar ++)

23
24

si (cuerdas [count] .startsWith ("arte", 2))

25 de salida + = "\" "+ cuerdas [contar] +


26

"\" Comienza con \ "art \" en la posicin 2 \ n ";

Mtodo startsWith determina si la cadena comienza con caracteres especficos

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringStartEnd.java

Lnea 33
27
28 salida + = "\ n";
29

30

// Mtodo de ensayo endsWith

31

for (int cuenta = 0; contador <strings.length; contar ++)

32
33

si (cuerdas [count] .endsWith ("ed"))

34 de salida + = "\" "+ cuerdas [cuenta] +" \ "termina con \" ed \ "\ n";
35
36 JOptionPane.showMessageDialog (null, la produccin,
37

"Las comparaciones clase String", JOptionPane.INFORMATION_MESSAGE);

38
39 System.exit (0);
40}
41
42} // fin de la clase StringStartEnd

Mtodo endsWith determina si la cadena termina con caracteres especficos

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.4 Localizacin de caracteres y subcadenas en


Cuerdas
Bsqueda de caracteres en cadena
Mtodo indexOf
Mtodo lastIndexOf
2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno
StringIndexMethods.java

Lneas 12-16

Lneas 19-26
1 // Fig. 11.5: StringIndexMethods.java
2 // Cuerda mtodos de bsqueda indexOf y lastIndexOf.
3 javax.swing importacin. *;
4
5 pblica StringIndexMethods clase {
6
7

pblico esttico void main (String args [])

8{
9 cartas de Cuerda = "abcdefghijklmabcdefghijklm";
10
11

// Test indexOf para localizar un carcter en una cadena

12 String salida = "" c "se encuentra en el ndice" + letters.indexOf ('c');


13
14 salida + = "\ n'a 'se encuentra en el ndice" + letters.indexOf (' a ', 1);
15
16 salida + = "\ n" $ "se encuentra en el ndice" + letters.indexOf ('$');
17
18

// LastIndexOf prueba para encontrar un carcter en una cadena

19 salida + = "\ n \ nLast 'c' se encuentra en el ndice" +


20 letters.lastIndexOf ('c');
21
22 salida + = "\ nLast 'a' se encuentra en el ndice" +
23 letters.lastIndexOf ("a", 25);
24

25 salida + = "'$' \ nLast se encuentra en el ndice" +


26 letters.lastIndexOf ('$');
27

Mtodo indexOf encuentra primera aparicin del personaje en Cadena


Mtodo lastIndexOf encuentra la ltima ocurrencia del carcter en cadena

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringIndexMethods.java

Lneas 29-46
28

// Test indexOf ubicar una subcadena en una cadena

29 salida + = "\ n \ n \" def \ "se encuentra en el ndice" +


30 letters.indexOf ("def");

31
32 salida + = "\ n \" def \ "se encuentra en el ndice" +
33 letters.indexOf ("def", 7);
34
35 salida + = "\ n \" hola \ "se encuentra en el ndice" +
36 letters.indexOf ("hola");
37
38

// LastIndexOf prueba para encontrar una subcadena en una cadena

39 salida + = "\ n \ nLast \" def \ "se encuentra en el ndice" +


40 letters.lastIndexOf ("def");
41
42 salida + = "\ nLast \" def \ "se encuentra en el ndice" +
43 letters.lastIndexOf ("def", 25);

44
45 salida + = "\ nLast \" hola \ "se encuentra en el ndice" +
46 letters.lastIndexOf ("hola");
47
48 JOptionPane.showMessageDialog (null, la produccin,
49

"Cuerda mtodos de bsqueda", JOptionPane.INFORMATION_MESSAGE);

50
51 System.exit (0);
52}
53
54} // fin de la clase StringIndexMethods

Mtodos indexOf y lastIndexOf tambin puede encontrar las apariciones de subcadenas


2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno
StringIndexMethods.java

11.3.5 Extraccin Subcadenas de Cuerdas


Crear cadena s de otra cadena s
Mtodo subcadena

2003 Prentice Hall, Inc. Todos los derechos reservados.

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
SubString.java

Lnea 13

Lnea 16

1 // Fig. 11.6: SubString.java


2 // Cuerda mtodos de clase subcadena.
3 javax.swing importacin. *;
4
5 pblica clase subcadena {
6
7

pblico esttico void main (String args [])

8{
9 cartas de Cuerda = "abcdefghijklmabcdefghijklm";
10
11

// mtodos subcadena prueba

12 String salida = "Subcadena del ndice 20 al final es" +


13

"\" "+ Letters.substring (20) +" \ "\ n";

14
15 salida + = "Subcadena de ndice de 3 hasta 6 es" +
16

"\" "+ Letters.substring (3, 6) +" \ "";

17
18 JOptionPane.showMessageDialog (null, la produccin,
19

"String substring mtodos", JOptionPane.INFORMATION_MESSAGE);

20
21 System.exit (0);
22}
23
24} // fin de la clase subcadena

Comenzando en el ndice 20, extraer personajes de las letras de Cuerda


Extrae caracteres de ndice de 3 a 6 de las cartas de Cuerda

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.6 concatenar cadenas


Concat Mtodo
Concatenar dos objetos String

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringConcatenation.java

Lnea 14

Lnea 15
1 // Fig. 11.7: StringConcatenation.java
2 mtodo concat // String.
3 javax.swing importacin. *;

4
5 pblica clase StringConcatenation {
6
7

pblico esttico void main (String args [])

8{
9 s1 String = new String ("Happy");
10 s2 String = new String ("Cumpleaos");
11
12 String salida = "s1 =" + s1 + "\ ns2 =" + s2;
13
14 salida + = "\ n \ nResult de s1.concat (s2) =" + s1.concat (s2);
15 salida + = "\ ns1 despus de concatenacin =" + s1;
16

17 JOptionPane.showMessageDialog (null, la produccin,


18

"Mtodo de cadena concat", JOptionPane.INFORMATION_MESSAGE);

19
20 System.exit (0);
21}
22
23} // fin de la clase StringConcatenation

Concatenar cadena s2 a cadena s1


Sin embargo, s1 cadena no se modifica por el mtodo concat

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.7 Varios Mtodos de Cuerda


Varios mtodos de Cuerda
Regreso copias modificadas de cuerdas
Volver matriz de caracteres

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringMiscellaneous2.java

Lnea 17

Lnea 20

Lnea 21

Lnea 24
1 // Fig. 11.8: StringMiscellaneous2.java
2 // mtodos de Cuerda reemplazan, toLowerCase, toUpperCase, asiento y ToCharArray.

3 javax.swing importacin. *;
4
5 pblica clase StringMiscellaneous2 {
6
7

pblico esttico void main (String args [])

8{
9 s1 String = new String ("hola");
10 s2 String = new String ("adis");
11 Cadena s3 = new String ("espacios");
12
13 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3;
14
15

// Mtodo de ensayo reemplazar

16 salida + = "\ n \ nReplace 'l' con 'L' en s1:" +


17 s1.replace ('l', 'L');
18
19

// ToLowerCase prueba y toUpperCase

20 salida + = "\ n \ ns1.toUpperCase () =" + s1.toUpperCase () +


21

"\ Ns2.toLowerCase () =" + s2.toLowerCase ();

22
23

// Mtodo de ajuste de prueba

24 salida + = "\ n \ ns3 despus del ajuste = \" "+ s3.trim () +" \ "";
25

Utilice el mtodo toUpperCase para volver copia s1 en el que cada personaje es mayscula
Utilice el mtodo del ajuste para volver copia s3 en el que se elimina el espacio en blanco
Utilice el mtodo toLowerCase para volver copia s2 en el que cada personaje es mayscula
Utilice el mtodo reemplazar a regresar copia s1 en el que cada ocurrencia de 'l' se sustituye por 'L'

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringMiscellaneous2.java

Lnea 27
26

// Mtodo ToCharArray prueba

27

Char charArray [] = s1.toCharArray ();

28 salida + = "\ n \ ns1 como una matriz de caracteres =";


29
30

for (int cuenta = 0; contador <charArray.length; ++ recuento)

31 salida + = charArray [contar];


32
33 JOptionPane.showMessageDialog (null, la produccin,

34

"Los mtodos adicionales de Cuerda", JOptionPane.INFORMATION_MESSAGE);

35
36 System.exit (0);
37}
38
39} // fin de la clase StringMiscellaneous2

Utilice el mtodo ToCharArray regresar matriz de caracteres de s1

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.3.8 Cadena Mtodo valueOf


Cadena proporciona mtodos estticos de clase
Mtodo valueOf
String representacin del objeto, datos, etc.
2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno
StringValueOf.java

Lneas 20-26
1 // Fig. 11.9: StringValueOf.java
2 mtodos // Cadena valueOf.
3 javax.swing importacin. *;
4
5 pblica clase StringValueOf {
6
7

pblico esttico void main (String args [])

8{
9
10

Char charArray [] = {'a', 'b', 'c', 'd', 'e', 'f'};


boolean booleanValue = true;

11

Char characterValue = 'Z';

12

int IntegerValue = 7;

13

larga longValue = 10000000L;

14

flotar floatValue = 2.5f; // f sufijo indica que 2,5 es un flotador

15

doble doubleValue = 33,333;

16 Objeto ObjectRef = "hola"; // cadena de asignacin a una referencia de objeto


17
18 Cadena de salida = "matriz de caracteres =" + String.valueOf (charArray) +
19

"\ NEl de matriz de caracteres =" + String.valueOf (charArray, 3, 3) +

20

"\ Nboolean =" + String.valueOf (booleanValue) +

21

"\ Nchar =" + String.valueOf (characterValue) +

22

"\ Nint =" + String.valueOf (IntegerValue) +

23

"\ Nlong =" + String.valueOf (longValue) +

24

"\ Nfloat =" + String.valueOf (floatValue) +

25

"\ Ndouble =" + String.valueOf (doubleValue) +

26

"\ NObject =" + String.valueOf (ObjectRef);

mtodo esttico valueOf de la clase String devuelve representacin String de varios tipos

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringValueOf.java
27
28 JOptionPane.showMessageDialog (null, la produccin,
29

"mtodos valueOf cadena", JOptionPane.INFORMATION_MESSAGE);

30
31 System.exit (0);
32}

33
34} // fin de la clase StringValueOf

11.4 Clase StringBuffer


Clase StringBuffer
Cuando se crea objeto String, su contenido no puede cambiar
Se utiliza para crear y manipular datos de cadena dinmicos
es decir, modificable Cadena s

2003 Prentice Hall, Inc. Todos los derechos reservados.

Puede almacenar caracteres basado en la capacidad


Capacidad expande dinmicamente para manejar caracteres

adicionales

Utiliza los operadores + y + = para la concatenacin de cadenas

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.1 StringBuffer Constructores

Tres constructores StringBuffer


Por defecto crea StringBuffer sin caracteres

Capacidad de 16 caracteres

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringBufferConstructors.java

Lnea 9

Lnea 10

Lnea 11

Lneas 13-15
1 // Fig. 11.10: StringBufferConstructors.java
2 constructores // StringBuffer.
3 javax.swing importacin. *;
4
5 pblica StringBufferConstructors clase {
6
7

pblico esttico void main (String args [])

8{
9 StringBuffer Buffer1 = new StringBuffer ();
10 StringBuffer buffer2 = new StringBuffer (10);
11 StringBuffer buffer3 = new StringBuffer ("hola");

12
13 String salida = "Buffer1 = \" "+ buffer1.toString () +" \ "" +
14

"\ Nbuffer2 = \" "+ buffer2.toString () +" \ "" +

15

"\ Nbuffer3 = \" "+ buffer3.toString () +" \ "";

16
17 JOptionPane.showMessageDialog (null, la produccin,
18

"constructores", StringBuffer JOptionPane.INFORMATION_MESSAGE);

19
20 System.exit (0);
21}
22
23} // fin de la clase StringBufferConstructors

Por defecto constructor crea StringBuffer vaco con capacidad de 16 caracteres

Segundo constructor crea StringBuffer vaco con capacidad de (10) caracteres especificados
En tercer constructor crea StringBuffer con la cadena "hola" y capacidad de 16 caracteres
ToString mtodo devuelve representacin String de StringBuffer

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.2 Mtodos StringBuffer longitud,


capacidad, setLength y ensureCapacity

Longitud Mtodo
Longitud Volver StringBuffer

Capacidad de Mtodo
Regreso capacidad StringBuffer

Mtodo setLength
Aumentar o disminuir la longitud StringBuffer

Mtodo ensureCapacity

Establecer la capacidad StringBuffer


Garantizar que StringBuffer tiene capacidad mnima

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringBufferCapLen.java

Lnea 12

Lnea 12

Lnea 14

Lnea 17

1 // Fig. 11.11: StringBufferCapLen.java


2 // StringBuffer longitud, setLength, capacidad y ensureCapacity mtodos.
3 javax.swing importacin. *;
4
5 pblica clase StringBufferCapLen {
6
7

pblico esttico void main (String args [])

8{
9 bfer StringBuffer = new StringBuffer ("Hola, cmo ests?");
10
11 String salida = "buffer =" + buffer.toString () + "\ nLongitud =" +
12 buffer.length (+) "\ ncapacity =" + buffer.capacity ();
13

14 buffer.ensureCapacity (75);
15 salida + = "\ n capacidad \ nNueva =" + buffer.capacity ();
16
17 buffer.setLength (10);
18 salida + = "\ n longitud \ nNueva =" + buffer.length () +
19

"\ Nbuf =" + buffer.toString ();

20
21 JOptionPane.showMessageDialog (null, la produccin,
22

"Longitud de StringBuffer y Mtodos de capacidad",

23

JOptionPane.INFORMATION_MESSAGE);

24

Longitud mtodo devuelve longitud StringBuffer


Capacidad mtodo devuelve la capacidad StringBuffer
Utilice el mtodo ensureCapacity para establecer capacidad para 75

Utilice el mtodo setLength para establecer la longitud de 10

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringBufferCapLen.java

Slo los 10 personajes de StringBuffer se imprimen


25 System.exit (0);
26}
27
28} // fin de la clase StringBufferCapLen

Slo los 10 personajes de StringBuffer se imprimen

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.3 StringBuffer Mtodos charAt,


setCharAt, getChars y reversa
La manipulacin de caracteres StringBuffer
Mtodo charAt
Regreso carcter StringBuffer en el ndice especificado

Mtodo setCharAt
Conjunto de caracteres StringBuffer en el ndice especificado

GetChars Mtodo
Regreso matriz de caracteres de StringBuffer

Mtodo inverso
Invierta contenidos StringBuffer
2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno
StringBufferChars.java

Lneas 12-13

Lnea 16

Lneas 22-23
1 // Fig. 11.12: StringBufferChars.java
2 mtodos // StringBuffer charAt, setCharAt, GetChars y marcha atrs.
3 javax.swing importacin. *;
4
5 pblica StringBufferChars clase {
6

pblico esttico void main (String args [])

8{
9 bfer StringBuffer = new StringBuffer ("hola");
10
11 String salida = "buffer =" + buffer.toString () +
12

"\ NCharacter a 0:" + buffer.charAt (0) +

13

"\ NCharacter en 4:" + buffer.charAt (4);

14
15

Char charArray [] = new char [buffer.length ()];

16 buffer.getChars (0, buffer.length (), charArray, 0);


17 de salida + = "\ n \ nLos personajes son:";
18
19

for (int cuenta = 0; contador <charArray.length; ++ recuento)

20 salida + = charArray [contar];


21
22 buffer.setCharAt (0, 'H');
23 buffer.setCharAt (6, 'T');
24 salida + = "\ n \ nbuf =" + buffer.toString ();
25

Devolver caracteres StringBuffer en los ndices 0 y 4, respectivamente


Regreso matriz de caracteres de StringBuffer

Reemplazar caracteres en los ndices 0 y 6 con 'H' y 'T', respectivamente,


2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno

StringBufferChars.java

Lneas 26
26 buffer.reverse ();
27 salida + = "\ n \ nbuf =" + buffer.toString ();
28
29 JOptionPane.showMessageDialog (null, la produccin,
30

"mtodos de carcter StringBuffer",

31

JOptionPane.INFORMATION_MESSAGE);

32
33 System.exit (0);
34}
35

36} // fin de la clase StringBufferChars

Caracteres inversas en StringBuffer

11.4.4 StringBuffer anexar Mtodos


Append Mtodo
Permitir que los valores de datos que se aadirn a StringBuffer

2003 Prentice Hall, Inc. Todos los derechos reservados.

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StringBufferAppend.java

Lnea 21

Lnea 23

Lnea 25

Lnea 27
1 // Fig. 11.13: StringBufferAppend.java
2 // StringBuffer anexar mtodos.
3 javax.swing importacin. *;
4
5 pblica clase StringBufferAppend {
6
7

pblico esttico void main (String args [])

8{
9 Objeto ObjectRef = "hola";
10 cadena String = "adis";

11

Char charArray [] = {'a', 'b', 'c', 'd', 'e', 'f'};

12

boolean booleanValue = true;

13

Char characterValue = 'Z';

14

int IntegerValue = 7;

15

larga longValue = 10000000;

16

flotar floatValue = 2.5f; // f sufijo indica 2.5 es un flotador

17

doble doubleValue = 33,333;

18 StringBuffer lastBuffer = new StringBuffer ("ltimo StringBuffer");


19 bfer StringBuffer = new StringBuffer ();
20
21 buffer.append (ObjectRef);
22 buffer.append (""); // cada uno de ellos contiene dos espacios
23 buffer.append (cadena);

24 buffer.append ("");
25 buffer.append (charArray);
26 buffer.append ("");
27 buffer.append (charArray, 0, 3);

Anexar cadena "hola" a StringBuffer


Anexar String "adis"
Anexar "abcdef"

Anexar "abc"
2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno
StringBufferAppend.java

Lnea 29-39

28 buffer.append ("");
29 buffer.append (booleanValue);
30 buffer.append ("");
31 buffer.append (characterValue);
32 buffer.append ("");
33 buffer.append (IntegerValue);
34 buffer.append ("");
35 buffer.append (longValue);
36 buffer.append ("");
37 buffer.append (floatValue);
38 buffer.append ("");
39 buffer.append (doubleValue);
40 buffer.append ("");

41 buffer.append (lastBuffer);
42
43 JOptionPane.showMessageDialog (null,
44

"Tampn =" + buffer.toString (), "StringBuffer anexar Mtodos",

45

JOptionPane.INFORMATION_MESSAGE);

46
47 System.exit (0);
48}
49
50} // fin StringBufferAppend

Anexar boolean, char, int, long, float y double

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.4.5 StringBuffer Insercin y Mtodos de eliminacin

Mtodo de insercin

Permitir que los valores de tipo de datos que se insertan


en StringBuffer

Mtodos eliminar y deleteCharAt


Permitir caracteres para ser removidos de StringBuffer
2003 Prentice Hall, Inc.

Todos los derechos reservados.

Contorno
StringBufferInsert.java

Lneas 20-26
1 // Fig. 11.14: StringBufferInsert.java
2 mtodos // StringBuffer insertar y eliminar.
3 javax.swing importacin. *;

4
5 pblica clase StringBufferInsert {
6
7

pblico esttico void main (String args [])

8{
9 Objeto ObjectRef = "hola";
10 cadena String = "adis";
11

Char charArray [] = {'a', 'b', 'c', 'd', 'e', 'f'};

12

boolean booleanValue = true;

13

Char characterValue = 'K';

14

int IntegerValue = 7;

15

larga longValue = 10000000;

16

flotar floatValue = 2.5f; // f sufijo indica que 2,5 es un flotador

17

doble doubleValue = 33,333;

18 bfer StringBuffer = new StringBuffer ();


19
20 buffer.insert (0, ObjectRef);
21 buffer.insert (0, ""); // cada uno de ellos contiene dos espacios
22 buffer.insert (0, cadena);
23 buffer.insert (0, "");
24 buffer.insert (0, charArray);
25 buffer.insert (0, "");
26 buffer.insert (0, charArray, 3, 3);

Use el mtodo de insercin para insertar datos en comienzo de StringBuffer


2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno

StringBufferInsert.java

Lneas 27-38

Lnea 42

Lnea 43
27 buffer.insert (0, "");
28 buffer.insert (0, booleanValue);
29 buffer.insert (0, "");
30 buffer.insert (0, characterValue);
31 buffer.insert (0, "");
32 buffer.insert (0, IntegerValue);
33 buffer.insert (0, "");

34 buffer.insert (0, longValue);


35 buffer.insert (0, "");
36 buffer.insert (0, floatValue);
37 buffer.insert (0, "");
38 buffer.insert (0, doubleValue);
39
40 String salida = "buffer despus de inserciones: \ n" + buffer.toString ();
41
42 buffer.deleteCharAt (10); // eliminar 5 en 2.5
43 buffer.delete (2, 6); // eliminar 0.333 en 33.333
44
45 salida + = "\ n \ nbuffer despus de eliminaciones: \ n" + buffer.toString ();
46

47 JOptionPane.showMessageDialog (null, la produccin,


48

"StringBuffer insertar / eliminar", JOptionPane.INFORMATION_MESSAGE);

49
50 System.exit (0);
51}
52
53} // fin de la clase StringBufferInsert

Use el mtodo de insercin para insertar datos en comienzo de StringBuffer


Utilice el mtodo deleteCharAt para eliminar el carcter de ndice 10 en StringBuffer

Retire los personajes de ndices 2 a 5 (inclusive)


2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno
StringBufferInsert.java

11.5 Clase Personajes


Tratar variables primitivas como objetos
Clases Tipo de contenedor

Boolean

Personaje

Doble

Flotador

Byte

Corto

Entero

Largo

2003 Prentice Hall, Inc. Todos los derechos reservados.

Examinamos la clase de personaje

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StaticCharMethods.java
1 // Fig. 11.15: StaticCharMethods.java
2 mtodos de prueba del carcter // estticas y mtodos de conversin caso.
3 import java.awt. *;
4 java.awt.event importacin. *;
5 javax.swing importacin. *;
6
7 pblica clase StaticCharMethods extiende JFrame {
8

privado Char c;

privada promptLabel JLabel;

10

privada inputField JTextField;

11

privada areaSalida JTextArea;

12
13

// Constructor construye GUI

14

StaticCharMethods pblicos ()

15 {
16

super ("Mtodos de carcter esttico");

17
18 Container contenedor = getContentPane ();
19 container.setLayout (new FlowLayout ());
20
21 promptLabel = new JLabel ("Introduzca un carcter y pulse Enter");
22 contenedor.add (promptLabel);
23 inputField = new JTextField (5);

24

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StaticCharMethods.java
25 inputField.addActionListener (
26
27

new ActionListener () {// clase interna annima

28
29

// Evento mango campo de texto

30

pblico void actionPerformed (ActionEvent evento)

31 {
32 Cadena s = event.getActionCommand ();
33 c = s.charAt (0);

34 buildOutput ();
35}
36
37} // fin de la clase interna annima
38
39); // fin de la llamada a addActionListener
40
41 contenedor.add (InputField);
42 areaSalida = new JTextArea (10, 20);
43 contenedor.add (areaSalida);
44
45 setSize (300, 220); // establecer el tamao de la ventana
46 setVisible (true); // mostrar la ventana

47
48} // fin del constructor

49

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StaticCharMethods.java

Lnea 54

Lnea 56

Lnea 58

Lnea 59

Lnea 60

Lneas 61-62
50

// Ver informacin de carcter en areaSalida

51

privado anular buildOutput ()

52 {
53 outputArea.setText ("se define:" + Character.isDefined (c) +
54

"Dgitos \ nis:" + Character.isDigit (c) +

55

"Primer carcter nis \ en un identificador Java:" +

56 Character.isJavaIdentifierStart (c) +
57

"Parte \ nis de un identificador Java:" +

58 Character.isJavaIdentifierPart (c) +

59

"Carta \ nis:" + Character.isLetter (c) +

60

"Carta nis \ o dgito:" + Character.isLetterOrDigit (c) +

61

"\ Nis minsculas:" + Character.isLowerCase (c) +

62

"\ Nis maysculas:" + Character.isUpperCase (c) +

63

"\ Na maysculas:" + Character.toUpperCase (c) +

64

"\ Na minsculas:" + Character.toLowerCase (c));

65}
66
67

// Crear StaticCharMethods objeto de comenzar la ejecucin

68

pblico esttico void main (String args [])

69 {
70 StaticCharMethods aplicacin = nuevos StaticCharMethods ();
71 application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

72}
73
74} // fin de la clase StaticCharMethods

Determinar dgitos Unicode si c se define


Determinar si c puede ser utilizado como primer carcter de identificador
Determinar si c se puede utilizar como carcter identificador
Determinar si c es una letra
Determine si c es letra o dgito

Determinar si c es mayscula o minscula


2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno
StaticCharMethods.java

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StaticCharMethods2.java
1 // Fig. 11.15: StaticCharMethods2.java
2 mtodos de conversin de caracteres // estticas.
3 import java.awt. *;
4 java.awt.event importacin. *;
5 javax.swing importacin. *;
6
7 pblica clase StaticCharMethods2 extiende JFrame {
8

privado Char c;

privado int dgitos, radix;

10

prompt1 JLabel privado, prompt2;

11

JTextField entrada privada, radixField;

12

privada JButton Tochar, Toint;

13
14

// Constructor construye GUI

15

StaticCharMethods2 pblico ()

16 {
17

super ("carcter de conversin Mtodos");

18
19 Container contenedor = getContentPane ();
20 container.setLayout (new FlowLayout ());
21
22 prompt1 = new JLabel ("Introduzca un dgito o carcter");
23 de entrada = new JTextField (5);

24 contenedor.add (prompt1);
25 contenedor.add (entrada);

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StaticCharMethods2.java

Lnea 44
26
27 prompt2 = new JLabel ("Introduzca un radix");
28 radixField = new JTextField (5);
29 contenedor.add (prompt2);
30 contenedor.add (radixField);
31

32 Tochar = new JButton ("Convertir dgitos al carcter");


33 toChar.addActionListener (
34
35

new ActionListener () {// clase interna annima

36
37

// Manejar evento Tochar JButton

38

pblico void actionPerformed (ActionEvent ActionEvent)

39 {
40 dgitos = Integer.parseInt (input.getText ());
41 radix = Integer.parseInt (radixField.getText ());
42 JOptionPane.showMessageDialog (null,
43

"Convertir dgitos al personaje:" +

44 Character.forDigit (dgito, radix));

45}
46
47} // fin de la clase interna annima
48
49); // fin de la llamada a addActionListener
50

Utilice el mtodo forDigit convertir int dgitos para el nmero de caracteres del sistema especificado

por int radix


2003 Prentice Hall, Inc.
Todos los derechos reservados.

Contorno
StaticCharMethods2.java

Lnea 64

51 Toint = new JButton ("Convertir personaje dgitos");


52 toInt.addActionListener (
53
54

new ActionListener () {// clase interna annima

55
56

// Manejar evento Toint JButton

57

pblico void actionPerformed (ActionEvent ActionEvent)

58 {
59 Cadena s = input.getText ();
60 c = s.charAt (0);
61 radix = Integer.parseInt (radixField.getText ());
62 JOptionPane.showMessageDialog (null,
63

"Convertir personaje dgitos:" +

64 Character.digit (c, radix));


65}
66
67} // fin de la clase interna annima
68
69); // fin de la llamada a addActionListener
70
71 contenedor.add (Tochar);
72 contenedor.add (Toint);
73 setSize (275, 150); // establecer el tamao de la ventana
74 setVisible (true); // mostrar la ventana
75}

Utilice el mtodo dgitos para convertir carbn c para entero nmero del sistema especificado por int
radix

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
StaticCharMethods2.java
76
77

// Crear StaticCharMethods2 objeto ejecutar la aplicacin

78

pblico esttico void main (String args [])

79 {
80 aplicaciones StaticCharMethods2 = new StaticCharMethods2 ();
81 application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
82}
83

84} // fin de la clase StaticCharMethods2

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
OtherCharMethods.java

Lneas 12-15
1 // Fig. 11.17: OtherCharMethods.java
2 // mtodos carcter no estticos.
3 javax.swing importacin. *;
4
5 pblica OtherCharMethods clase {
6
7

pblico esttico void main (String args [])

8{
C1 = 9 Carcter nuevo personaje ('A');
C2 10 caracteres = new Carcter ('a');
11
12 String salida = "c1 =" + c1.charValue () +
13

"\ Nc2 =" + c2.toString ();

14
15

si (c1.equals (c2))

16 salida + = "\ n \ nc1 y c2 son iguales";


17

ms

18 salida + = "\ n \ nc1 y c2 no son iguales";


19
20 JOptionPane.showMessageDialog (null, la produccin,

21

"mtodos de carcter no estticos",

22

JOptionPane.INFORMATION_MESSAGE);

23
24 System.exit (0);
25}
26
27} // fin de la clase OtherCharMethods

Personajes mtodos no estticos charValue, toString y equals

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.6 Clase StringTokenizer

Tokenizer
Cadena de reparto en subcadenas individuales
Uso delimitador

Java ofrece java.util.StringTokenizer

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
TokenTest.java

Lnea 24
1 // Fig. 11.18: TokenTest.java
2 clase // StringTokenizer.
3 import java.util. *;
4 import java.awt. *;
5 java.awt.event importacin. *;
6 javax.swing importacin. *;
7

8 pblica clase TokenTest extiende JFrame {


9

privada promptLabel JLabel;

10

privada inputField JTextField;

11

privada areaSalida JTextArea;

12
13

// Configurar GUI y manejo de eventos

14

TokenTest pblico ()

15 {
16

sper ( "Prueba de Clase StringTokenizer" );

17
18 Container contenedor = getContentPane ();
19 container.setLayout ( nueva FlowLayout ());
20

21 promptLabel = nueva JLabel ( "Introduzca una frase y pulse Intro" );


22 contenedor.add (promptLabel);
23
24 inputField = nueva JTextField ( 20 );

inputField contiene Cadena a ser analizado por StringTokenizer

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
TokenTest.java

Lnea 33 Lnea 36 Lneas 38-39

25 inputField.addActionListener (

26
27

nueva ActionListener () { // clase interna annima

28
29

// Evento campo de texto mango

30

pblico anular actionPerformed (ActionEvent evento)

31 {
32 fichas StringTokenizer =
33

nueva StringTokenizer (event.getActionCommand ());

34
35 outputArea.setText ( "Nmero de elementos:" +
36 tokens.countTokens () + "tokens \ nLos son: \ n" );
37
38

mientras que (tokens.hasMoreTokens ())

39 outputArea.append (tokens.nextToken () + "\ n" );


40 }
41
42 } // fin de la clase interna annima
43
44 ); // fin de la llamada a addActionListener
45
46 contenedor.add (InputField);
47
48 areaSalida = nueva JTextArea ( 10 , 20 );
49 outputArea.setEditable ( false );
50 contenedor.add ( nueva JScrollPane (areaSalida));
51 setSize ( 275 , 240 ); // establecer el tamao de la ventana

52 setVisible ( verdadero ); // mostrar la ventana


53 }

Utilice StringTokenizer para analizar el uso de cuerdas delimitador predeterminado " \ n \ t \ r "
Contar el nmero de fichas
Anexar al lado de contadores a areaSalida, mientras existan tokens

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
TokenTest.java
54
55

// Ejecutar la aplicacin

56

pblico esttico void principales (String args [])

57 {
58 aplicaciones TokenTest = nueva TokenTest ();

59 application.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
60 }
61
62 } // fin de la clase TokenTest

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.7 Tarjeta de barajar y repartir Simulacin


Desarrollar aplicaciones DeckOfCards

Crear baraja de 52 cartas con objetos Card


Se ocupa del usuario tarjeta haciendo clic "Trato botn de la

tarjeta "
Usuario baraja cubierta haciendo clic en "Aleatorio botn de
tarjetas "

Utilice generacin aleatoria de nmeros

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
DeckOfCards.java

Lneas 19 y 29 de la lnea 30

1 // Fig. 11.19: DeckOfCards.java


2 // barajar y el programa que trata.
3 import java.awt. *;
4 importacin java.awt.event. *;
5 de importaciones javax.swing. *;
6

7 pblicas clase DeckOfCards extiende JFrame {


8

privada cubierta de la tarjeta [];

privado int currentCard;

10

privada JButton dealButton, shuffleButton;

11

privada displayField JTextField;

12

privada statusLabel JLabel;

13
14

// Configurar baraja de cartas y GUI

15

pblicas DeckOfCards ()

16 {
17

sper ( "Tarjeta Programa de Negociacin" );

18
19 Cadena enfrenta [] = { "Ace" , "Deuce" , "Tres" , "cuatro" , "cinco" , "seis" ,

20

"Seven" , "Ocho" , "Nine" , "Ten" , "Jack" , "reina" , "rey" };

21 trajes String [] = { "Corazones" , "Diamantes" , "Clubs" , "espadas" };


22
23 = cubierta nueva tarjeta [ 52 ];
24 currentCard = -1 ;
25

Baraja de 52 cartas
Ms recientemente tratado tarjetas en orden mazo (-1 si no hay cartas han sido repartidas)

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
DeckOfCards.java

Lneas 27-29

Lnea 43

Lnea 46
26

// Poblar cubierta con objetos Carta

27

para ( int count = 0 ; contador <deck.length; contar ++)

28 mazo [contar] = nueva Tarjeta (caras [cuentan% 13 ],


29 trajes [contar / 13 ]);
30
31

// Configurar GUI y manejo de eventos

32 Container contenedor = getContentPane ();


33 container.setLayout ( nueva FlowLayout ());
34
35 dealButton = nuevo JButton ( "tarjeta de Deal" );

36 dealButton.addActionListener (
37
38

nueva ActionListener () { // clase interna annima

39
40

// Contrato de un tarjeta

41

pblico void actionPerformed (ActionEvent ActionEvent)

42 {
43 Tarjeta trat = dealCard ();
44
45

si (tratado! = nula ) {

46 displayField.setText (dealt.toString ());


47 statusLabel.setText ( "Tarjeta #:" + currentCard);
48 }

49

else {

50 displayField.setText ( "NO MS TARJETAS PARA TRATAR" );


51 statusLabel.setText ( "tarjetas Aleatorio para continuar" );
52 }

Llenar matriz cubierta con Tarjetas


Cuando el usuario pulsa el botn Tarjeta de Deal, mtodo dealCard consigue siguiente carta en la
matriz cubierta
Display Card en JTextField

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
DeckOfCards.java

Lnea 70

54
55 } // fin de la clase interna annima
56
57 ); // fin de la llamada a addActionListener
58
59 contenedor.add (dealButton);
60
61 shuffleButton = nuevo JButton ( "Aleatorio cartas" );
62 shuffleButton.addActionListener (
63
64

nueva ActionListener () { // clase interna annima

65
66

// Cubierta aleatoria

67

pblico void actionPerformed (ActionEvent ActionEvent)

68 {
69 displayField.setText ( "arrastrando los pies ..." );
70 shuffle ();
71 displayField.setText ( "cartas se barajan" );
72 }
73
74 } // fin de la clase interna annima
75
76 ); // fin de la llamada a addActionListener
77
78 contenedor.add (shuffleButton);

Cuando el usuario pulsa el botn Aleatorio Tarjetas, mtodo aleatorio baraja tarjetas

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
DeckOfCards.java

Lneas 92-102
79
80 displayField = nueva JTextField ( 20 );
81 displayField.setEditable ( false );
82 contenedor.add (displayField);
83
84 statusLabel = nueva JLabel ();
85 contenedor.add (statusLabel);
86

87 setSize ( 275 , 120 ); // establecer tamao de la ventana


88 setVisible ( verdadero ); // espectculo ventana
89 }
90
91

// Cubierta aleatoria de cartas con el algoritmo de una sola pasada

92

privado void shuffle ()

93 {
94 currentCard = -1 ;
95
96

// Para cada tarjeta, escoja otra tarjeta al azar y se intercambiarlos

97

para ( int primero = 0 ; primero <deck.length; primero ++) {

98

int segundos = ( int ) (Math.random () * 52 );

99 Tarjeta temp = mazo [primera];

100 mazo [primero] = el mazo [segundo];


101 mazo [segundo] = temp;
102 }
103

Baraja las tarjetas mediante el canje de cada tarjeta con la tarjeta seleccionada al azar

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
DeckOfCards.java

Lneas 108-116 Lneas 114 y 123


104 dealButton.setEnabled ( verdadero );
105 }

106
107

// Contrato de un tarjeta

108

privado Tarjeta dealCard ()

109 {
110

si (++ currentCard <deck.length)

111

retorno mazo [currentCard];

112

else {

113 dealButton.setEnabled ( false );


114

retorno nulo;

115 }
116 }
117
118

// Ejecutar la aplicacin

119

pblico esttico void principales (String args [])

120 {
121 DeckOfCards aplicacin = nuevos DeckOfCards ();
122
123 application.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
124 }
125
126 } // fin de la clase DeckOfCards
127

Si la cubierta no est vaca, se devuelve una referencia de objeto Tarjeta; de lo contrario, se devuelve
nulo
Mtodo setEnabled activa y desactiva JButton

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
DeckOfCards.java Lneas 130-131
128 // clase para representar una tarjeta
129 clase Card {
130

privada cara String;

131

privada traje String;

132
133

// Constructor para inicializar una tarjeta

134

pblica Card (String cardFace, Cadena cardSuit)

135 {
136 face = cardFace;
137 traje = cardSuit;
138 }

139
140

// Devuelve Cadena represenation de tarjeta

141

pblica String toString ()

142 {
143

volver la cara + "de" + traje;

144 }
145
146 } // fin de la clase de tarjeta

Tienda nombre de cara y traje para la tarjeta especfica, respectivamente

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.8 Expresiones regulares, Clase Patrn y


clase Matcher
Expresin regular

Secuencia de caracteres y smbolos


Definir un conjunto de cuerdas

Clase Modelo
Una expresin regular inmutable

Clase Partido
Una operacin de la expresin regular de juego

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.8 Expresiones regulares, Clase Patrn y


clase Matcher

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.8 Expresiones regulares, Clase Patrn y


clase Matcher

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ValidateFrame.java
1 // Fig. 11.21: ValidateFrame.java
2 // informacin de usuario Validar el uso de expresiones regulares.
3 import java.awt. *;
4 importacin java.awt.event. *;
5 de importaciones javax.swing. *;
6
7 pblica clase ValidateFrame extiende JFrame {
8

privada JTextField phoneTextField, zipTextField, stateTextField,

9 cityTextField, addressTextField, firstTextField, lastTextField;


10

11

pblico ValidateFrame ()

12 {
13

sper ( "Validar" );

14
15 // crear los componentes GUI
16 JLabel phoneLabel = nueva JLabel ( "Telfono" );
17 JLabel zipLabel = nueva JLabel ( "Zip" );
18 JLabel stateLabel = nueva JLabel ( "Estado" );
19 JLabel cityLabel = nueva JLabel ( "Ciudad" );
20 JLabel direccinEtiqueta = nueva JLabel ( "Direccin" );
21 JLabel FirstLabel = nueva JLabel ( "Nombre" );
22 JLabel LastLabel = nueva JLabel ( "Last Name" );
23

24 JButton okButton = nuevo JButton ( "OK" );

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ValidateFrame.java
25 okButton.addActionListener (
26
27

nueva ActionListener () { // clase interna

28
29

pblico anular actionPerformed (ActionEvent evento) {

30 validateDate ();
31 }
32
33 } // fin de la clase interna

34
35 ); // fin de la llamada a addActionListener
36
37 phoneTextField = nueva JTextField ( 15 );
38 zipTextField = nueva JTextField ( 5 );
39 stateTextField = nueva JTextField ( 2 );
40 cityTextField = nuevo JTextField ( 12 );
41 addressTextField = nuevo JTextField ( 20 );
42 firstTextField = nuevo JTextField ( 20 );
43 lastTextField = nuevo JTextField ( 20 );
44
45 JPanel firstName = nueva JPanel ();
46 firstName.add (FirstLabel);

47 firstName.add (firstTextField);
48
49 JPanel lastName = nueva JPanel ();
50 lastName.add (LastLabel);
51 lastName.add (lastTextField);

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ValidateFrame.java
52
53 JPanel address1 = nuevos JPanel ();
54 address1.add (direccinEtiqueta);
55 address1.add (addressTextField);
56

57 JPanel address2 = nuevos JPanel ();


58 address2.add (cityLabel);
59 address2.add (cityTextField);
60 address2.add (stateLabel);
61 address2.add (stateTextField);
62 address2.add (zipLabel);
63 address2.add (zipTextField);
64
65 JPanel telfono = nuevos JPanel ();
66 phone.add (phoneLabel);
67 phone.add (phoneTextField);
68
69 JPanel ok = nuevos JPanel ();

70 ok.add (okButton);
71
72 // agregar los componentes de la aplicacin
73 Container contenedor = getContentPane ();
74 container.setLayout ( nueva GridLayout ( 6 , 1 ));
75

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ValidateFrame.java
76 contenedor.add (firstName);
77 contenedor.add (lastName);
78 contenedor.add (address1);
79 contenedor.add (address2);

80 contenedor.add (telfono);
81 contenedor.add (ok);
82
83 setSize ( 325 , 225 );
84 setVisible ( verdadero );
85
86 } // fin del constructor ValidateFrame
87
88

pblico esttico void principales (String args [])

89 {
90 aplicaciones ValidateFrame = nueva ValidateFrame ();
91 application.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
92 }

93
94 // maneja evento action okButton

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ValidateFrame.java Lneas 109-118
95

privado anular validateDate ()

96 {
97 // asegurar que no hay cuadros de texto estn vacas
98

si (lastTextField.getText (). equals ( "" ) ||

99 firstTextField.getText (). equals ( "" ) ||


100 addressTextField.getText (). equals ( "" ) ||
101 cityTextField.getText (). equals ( "" ) ||

102 stateTextField.getText (). equals ( "" ) ||


103 zipTextField.getText (). equals ( "" ) ||
104 phoneTextField.getText (). equals ( "" )) // condicin final
105
106 JOptionPane.showMessageDialog ( este , "Por favor, complete todos los campos" );
107
108 // si primer formato nombre del show invlida mensaje
109

ms si (! firstTextField.getText (). coincida ( "[AZ] [a-zA-Z] *" ))

110 JOptionPane.showMessageDialog ( esto , "no vlido nombre" );


111
112 // si la ltima formato de nombre espectculo invlida mensaje
113

ms si (! lastTextField.getText (). coincida ( "[AZ] [a-zA-Z] *" ))

114 JOptionPane.showMessageDialog ( esto , "no vlido apellido" );

115
116 // si el formato de direccin no vlida mensaje espectculo
117

ms si (! addressTextField.getText (). Correspondencias (

118

"\\ \\ D + s + ([a-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))

119 JOptionPane.showMessageDialog ( este , "la direccin no vlida" );


120

Partidos devuelve true si la cadena coincide con la expresin regular

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ValidateFrame.java Lneas 122-137
121 // si el formato de la ciudad no vlido mensaje espectculo
122

ms si (! cityTextField.getText (). Correspondencias (

123

"([A-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))

124 JOptionPane.showMessageDialog ( este , "la ciudad no vlida" );


125
126 // si el formato estado no vlido mensaje espectculo
127
128

ms si (! stateTextField.getText (). Correspondencias (


"([A-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))

129 JOptionPane.showMessageDialog ( este , "el estado no vlido" );


130
131 // si el formato cdigo postal vlido mensaje espectculo
132

ms si (! zipTextField.getText (). los partidos ( "\\ d {5}" ))

133 JOptionPane.showMessageDialog ( este , "cdigo postal vlido" );


134
135 // si el formato nmero de telfono vlido mensaje espectculo

136
137

ms si (! phoneTextField.getText (). Correspondencias (


"[1-9] \\ d {2} - [1-9] \\ d {2} - \\ d {4}" ))

138 JOptionPane.showMessageDialog ( este , "el nmero de telfono vlido" );


139
140

dems // informacin es vlida, el usuario de la seal

141 JOptionPane.showMessageDialog ( este , "Gracias" );


142
143 } // fin del mtodo validateDate
144
145 } // fin de la clase ValidateFrame

Partidos devuelve true si la cadena coincide con la expresin regular

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno

ValidateFrame.java
Mensaje de error si TextBox deja en blanco
Seal de que la "postal" TextBox se ingres incorrectamente
Significan que todos los TextBox es se introdujeron en el formato correcto

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
RegexSubstitution.java Lnea 15 Lnea 20 Lnea 26

1 // Fig. 11.23: RegexSubstitution.java


2 // El uso de mtodos replaceFirst, ReplaceAll y dividida.

3 de importacin javax.swing. *;
4
5 pblica clase RegexSubstitution
6{
7

pblico esttico void principales (String args [])

8{
9 Cadena firstString = "Esta frase termina en 5 estrellas *****" ;
10 Cadena secondString = "1, 2, 3, 4, 5, 6, 7, 8" ;
11
12 String salida = "String original 1:" + firstString;
13
14 // reemplazar '*' con '^'
15 firstString = firstString.replaceAll ( "\\ *" , "^" );

16
17 salida + = "\ n ^ sustituido por *:" + firstString;
18
19 // reemplazar 'estrellas' con 'signos de intercalacin'
20 firstString = firstString.replaceAll ( "estrellas" , "CARET" );
21
22 de salida + = signos de intercalacin "\ n \" \ "sustituir \" estrellas \ ":" + firstString;
23
24 // reemplazar palabras con 'palabra'
25 salida + = "palabra \ Nevery reemplazado por \" palabra \ ":" +
26 firstString.replaceAll ( "\\ w +" , "palabra" );

Reemplace cada instancia de "*" en firstString con "^"


Reemplace cada instancia de "estrellas" en firstString con "signos de intercalacin"
Vuelva a colocar cada palabra en firstString con "palabra"

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
RegexSubstitution.java Lnea 32 Lnea 38

27
28 salida + = "\ n \ nOriginal Cadena 2:" + secondString;
29
30 // reemplazar tres primeros dgitos con 'dgito'
31

para ( int i = 0 ; i < 3 ; i ++)

32 secondString = secondString.replaceFirst ( "\\ d" , "dgitos" );


33

34 salida + = "\ Nfirst 3 dgitos reemplazados por \" dgitos \ ":" +


35 secondString;
36 salida + = "\ nSTRING divide en comas: [" ;
37
38 String [] = secondString.split resultados ( "\\ s *" ); // divisin de comas
39
40

para ( int i = 0 ; i <results.length; i ++)

41 de salida + = "\" " + resultados [i] + "\", " ; // resultados de salida


42
43 // eliminar la coma extra y aadir un soporte
44 salida = output.substring ( 0 , output.length () - 2 ) + "]" ;
45
46 JOptionPane.showMessageDialog ( nula , de salida);

47 System.exit ( 0 );
48
49 } // fin del mtodo principal
50
51 } // fin de la clase RegexSubstitution

replaceFirst sustituye a una sola aparicin de la expresin regular


dividida vuelve matriz de subcadenas entre los partidos de la expresin regular

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
RegexSubstitution.java

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno

RegexMatches.java Lneas 13-14 Lnea 22

Lnea 24

Lnea 25
1 // Fig. 11.24: RegexMatches.java
2 // Demostracin de clases Pattern y Matcher.
3 de importacin java.util.regex. *;
4 importacin javax.swing. *;
5

6 clase RegexMatches
7{
8

pblico esttico void principales (String args [])

9{
10 String salida = "" ;
11
12 // crear expresiones regulares
13 expresin del patrn =
14 Pattern.compile ( "J * \\ d [0-35-9] - \\ d \\ d - d \\ \\ d." );
15
16 cadena1 String = "El cumpleaos de Jane es 5.12.75 \ n" +
17

"Dave cumpleaos es 4.11.68 \ n" +

18

"El cumpleaos de Juan es 4.28.73 \ n" +

19

"El cumpleaos de Joe es 12/17/77" ;

20
21 // partido expresin regular a los partidos de cuerda y de impresin
22 Matcher matcher = expression.matcher (cadena1);
23
24

mientras que (matcher.find ())

25 salida + = matcher.group () + "\ n" ;

compilacin crea un objeto de expresiones regulares inmutables


matcher asocia un objeto patrn con una cadena
hallazgo pone la primera subcadena que coincide con la expresin regular
grupo devuelve la subcadena coincidente

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno

RegexMatches.java
26
27 JOptionPane.showMessageDialog ( nula , de salida);
28 System.exit ( 0 );
29
30 } // fin principal
31
32 } // fin de la clase RegexMatches

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo prctico opcional) Acerca de los


objetos: Manipulacin Evento
Cmo interactan los objetos

Envo de objeto enva un mensaje a un objeto que recibe

Se discute cmo los objetos del sistema de ascensor interactan


El comportamiento del sistema Modelo

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo prctico opcional) Acerca de los


objetos: Manipulacin Evento
Evento
Mensaje que notifica a un objeto de una accin

Accin: Ascensor llega al piso

Consecuencia: Ascensor enva evento elevatorArrived a Puerta

Elevator 's

es decir, la puerta est "notific" que ha llegado Ascensor

Accin: se abre la puerta Elevator 's

Consecuencia: Puerta enva evento doorOpened a persona

es decir, la persona se "notific" que ha abierto la puerta

Estructura de denominacin preferido


Sustantivo ( "ascensor") precedido de verbo ("lleg")

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ElevatorSimulationEvent.java

Lnea 8

Lnea 11 Lnea 14
1 // ElevatorSimulationEvent.java
2 // Bsica paquetes evento sosteniendo objeto Ubicacin
3 paquete com.deitel.jhtp5.elevator.event;

4
5 // paquetes Deitel
6 importacin com.deitel.jhtp5.elevator.model. *;
7
8 public class ElevatorSimulationEvent {
9
10 // Ubicacin que gener ElevatorSimulationEvent
11

privada ubicacin Ubicacin;

12
13 // fuente de generada ElevatorSimulationEvent
14

privada fuente de objetos;

15
16 // ElevatorSimulationEvent constructor establece Ubicacin

17

pblica ElevatorSimulationEvent (fuente de objetos,

18 la ubicacin, ubicacin)
19 {
20 setFuente (fuente);
21 setLocation (ubicacin);
22 }
23

Representa un evento en la simulacin del ascensor


Lugar de referencia objeto representa la ubicacin donde incluso se ha generado
Referencia de objeto Objeto representa objeto que gener evento

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ElevatorSimulationEvent.java

24 // establecer ElevatorSimulationEvent Ubicacin


25

public void setLocation (Lugar Eventlocation)

26 {
27 ubicacin = Eventlocation;
28}
29
30 // obtener ElevatorSimulationEvent Ubicacin
31

pblica Ubicacin getLocation ()

32 {
33

volver ubicacin;

34 }
35
36 // establecer fuente ElevatorSimulationEvent

37

private void setFuente (EventSource Object)

38 {
39 fuente = EventSource;
40 }
41
42 // get source ElevatorSimulationEvent
43

pblica getSource Object ()

44 {
45

volver fuente;

46 }
47 }

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo prctico opcional) Acerca de los


objetos: Manipulacin Evento
Objetos envan ElevatorSimulationEvent
Esto puede llegar a ser confuso

Puerta enva ElevatorSimulationEvent a persona al abrir

Ascensor enva ElevatorSimulationEvent a Puerta a la llegada

Solucin:
Crear varias subclases ElevatorSimulationEvent

Cada subclase representa mejor la accin

por ejemplo, BellEvent cuando suena la campana

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. 11.26 diagrama de clases que los modelos de la generalizacin entre


ElevatorSimulationEvent y sus subclases.
ElevatorSimulationEvent

BellEvent
DoorEvent
PersonMoveEvent
ButtonEvent
ElevatorMoveEvent
LightEvent

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. 11.27 Disparo acciones de los eventos de subclases


ElevatorSimulationEvent

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo prctico opcional) Acerca de los


objetos: Manipulacin Evento
Manejo de eventos
Similar a la colaboracin
Objeto enva el mensaje (evento) a los objetos

Sin embargo, la recepcin de los objetos debe


estar escuchando para el evento

Llamados detectores de eventos

Los oyentes deben registrarse con el remitente para recibir

eventos

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo prctico opcional) Acerca de los


objetos: Manipulacin Evento
Modificar diagrama de colaboracin de la Fig. 7.19
Incorporar el manejo de eventos (Fig. 11.28)
Tres cambios
Incluir notas

Explicaciones sobre grficos UML

Representada como rectngulos con esquinas "doblada"

Todas las interacciones ocurren en el primer piso


Elimina la ambigedad de nombres
Incluya eventos
Ascensor informa objetos de la accin que ha ocurrido
Ascensor notifica objeto de llegada

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. 11.28 diagrama de colaboracin Modificado para los pasajeros entrar y salir
del ascensor en el primer piso
: Ascensor
firstFloorLight: Luz
firstFloorButton: Button

: ElevatorShaft
waitingPassenger: Persona
: ElevatorDoor
firstFloorDoor: Puerta
ridingPassenger: Persona

3.2.1 doorOpened (DoorEvent)


4.2.1: turnOnLight ()
4.1.1: resetButton ()
3.3.1: exitElevator ()
3.2.1.1: enterElevator ()
4: elevatorArrived (ElevatorMoveEvent)
3.2: OpenDoor ()
3.3: doorOpened ()
3.1: OpenDoor (Ubicacin)
1: elevatorArrived (ElevatorMoveEvent)
4.1: elevatorArrived (ElevatorMoveEvent)
4.2: elevatorArrived (ElevatorMoveEvent)
2: elevatorArrived (ElevatorMoveEvent)

: Campana
2.1: ringBell ()

elevatorButton: Button
1.1: resetButton ()
3: elevatorArrived (ElevatorMoveEvent)

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo prctico opcional) Acerca de los


objetos: Manipulacin Evento
Los detectores de eventos

Ascensor enva ElevatorMoveEvent


Todas las clases de eventos (en nuestra simulacin) tienen esta

estructura

La puerta debe implementar la interfaz que "escucha" para este

evento

Puerta implementa la interfaz ElevatorMoveListener


Mtodo elevatorArrived
Se invoca cuando llega Ascensor
Mtodo elevatorDeparted

Se invoca cuando se aparta Ascensor

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ElevatorMoveEvent.java
1 // ElevatorMoveEvent.java
2 // Indica en qu piso llegaron o partieron del Ascensor
3 paquete com.deitel.jhtp5.elevator.event;
4
5 paquete // Deitel
6 importacin com.deitel.jhtp5.elevator.model. *;
7
8 public class ElevatorMoveEvent extiende ElevatorSimulationEvent {
9

10 // ElevatorMoveEvent constructor
11

pblica ElevatorMoveEvent (fuente de objetos, ubicacin, ubicacin)

12 {
13

sper (fuente, ubicacin);

14 }
15 }

2003 Prentice Hall, Inc.


Todos los derechos reservados.

Contorno
ElevatorMoveListener.java
1 // ElevatorMoveListener.java
2 // Mtodos invocados cuando Ascensor ha ido bien o llegado
3 paquete com.deitel.jhtp5.elevator.event;
4

5 pblica interfaz ElevatorMoveListener {


6
7 // Invoca cuando se ha apartado Ascensor
8

pblico anular elevatorDeparted (ElevatorMoveEvent moveEvent);

9
10

// Invoca cuando Ascensor ha llegado

11

pblico anular elevatorArrived (ElevatorMoveEvent moveEvent);

12 }

2003 Prentice Hall, Inc. Todos los derechos reservados.

11.9 (Ejemplo prctico opcional) Acerca de los


objetos: Manipulacin Evento
Diagrama de clases revisitado

Modificar diagrama de clases de la figura. 10.28 para incluir

Seales (eventos)
por ejemplo, Ascensor seales llegada a Luz
Asociaciones de autnomos
por ejemplo, la luz se convierte en s y fuera

2003 Prentice Hall, Inc. Todos los derechos reservados.

Fig. Diagrama de 11.31 Clase de nuestro simulador


(incluyendo la gestin de eventos)
Luz
Piso
ElevatorShaft
Elevador
Persona
Campana
2
2
2
1

1
1
1
1
1
1
1

1
1
1
1
1
1
1
2

Prensas
Seales para mover
Restablece

Abre / Cierra
Ocupa
Signalsarrival

Activa / desactiva

Anillos
Puerta
Botn
Ubicacin
Las seales de la llegada
Signalsarrival
Signalsarrival

Signalsarrival
Signalsarrival
Informa de apertura
1
1
1
1
1
1
1
1
1

1
1

Abre / Cierra
1

ElevatorDoor
1

S-ar putea să vă placă și