11 TRADUCIDAvxcv
-
Upload
giiaan-tu-niniow -
Category
Documents
-
view
4 -
download
0
description
Transcript of 11 TRADUCIDAvxcv
2003 Prentice Hall, Inc. Todos los derechos reservados.
Capítulo 11 - Cuerdas y PersonajesContorno
11.1 Introducción
11.2 Fundamentos de caracteres y cadenas
11.3 Clase Cadena
11.3.1 Cuerda Constructores
11.3.2 Métodos de Cuerda longitud, charAt y getChars
11.3.3 Strings Comparar
11.3.4 Localización de caracteres y subcadenas en Cuerdas
11.3.5 Extracción Subcadenas de Cuerdas
11.3.6 concatenar cadenas
11.3.7 Varios Métodos de Cuerda
11.3.8 Cadena Método valueOf
11.4 Clase StringBuffer
11.4.1 StringBuffer Constructores
11.4.2 Métodos StringBuffer longitud, capacidad, setLength y ensureCapacity
11.4.3 StringBuffer Métodos charAt, setCharAt, getChars y reversa
2003 Prentice Hall, Inc. Todos los derechos reservados.
Capítulo 11 - Cuerdas y Personajes
11.4.4 StringBuffer anexar Métodos
11.4.5 StringBuffer Inserción y Métodos de eliminación
11.5 Clase Personajes
11.6 Clase StringTokenizer
11.7 Tarjeta de barajar y repartir Simulación
11.8 Expresiones regulares, patrón del grupo y Matcher
11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.1 Introducción Cadena y el carácter 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 código Java
Cadena Series de caracteres tratado como sola unidad
Puede incluir letras, números, etc.
Objeto de la clase String
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.3.1 Cuerda Constructores Clase String Proporciona nueve constructores
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringConstructors.java
Línea 17
Línea 18
Línea 19
Línea 20
Línea 21
Línea 22
1 // Fig. 11.1: StringConstructors.java
2 constructores de clase // cadena.
3 javax.swing importación. *;
4
5 pública StringConstructors clase {
6
7 público estático void main (String args [])
8 {
9 Char charArray [] = {'b', 'i', 'r', 't', 'h', '', 'd', 'a', 'y'};
10 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 carácter conjunto de subconjuntos
Constructor copias array de caracteres
Copias Constructor Cadena
Constructor por defecto Cadena instancia cadena vacía
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 producción,
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 Métodos de Cuerda longitud, charAt y getChars
Longitud Método Determinación de la longitud de cuerda
Al igual que las matrices, cadena s siempre "sabe" su tamaño
A diferencia de array, string s no tienen longitud variable de
instancia
Método charAt Obtén carácter en la ubicación específica en Cadena
GetChars Método Obtener todo el conjunto de caracteres en cadena
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringMiscellaneous.java
Línea 16
Línea 21
1 // Fig. 11.2: StringMiscellaneous.java
2 // Este programa demuestra la longitud, charAt y getChars
3 // métodos de la clase String.
4 javax.swing importación. *;
5
6 pública clase StringMiscellaneous {
7
8 público estático void main (String args [])
9 {
10 Cadena s1 = "hola";
11 Char charArray [] = new char [5];
12
13 String salida = "s1:" + s1;
14
15 // Método de longitud de la prueba
16 salida + = "\ nLongitud de s1:" + s1.length ();
17
18 // Bucle a través 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 número 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
Línea 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 producción,
32 "Cuerda métodos de manipulación de carácter 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 comparación de objetos String Método es igual
Método equalsIgnoreCase
Método compareTo
RegionMatches Método
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringCompare.java
Línea 18
Línea 24
1 // Fig. 11.3: StringCompare.java
2 // métodos de Cuerda es igual, equalsIgnoreCase, compareTo y regionMatches.
Javax.swing.JOptionPane 3 de importación;
4
5 pública clase StringCompare {
6
7 público estático void main (String args [])
8 {
9 s1 String = new String ("hola"); // s1 es una copia de "hola"
10 Cadena s2 = "adiós";
11 Cadena s3 = "feliz cumpleaños";
12 s4 String = "feliz cumpleaños";
13
14 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3 +
15 "\ Ns4 =" + s4 + "\ n \ n";
16
17 // Prueba para la igualdad
18 if (s1.equals ("hola")) // true
19 salida + = "s1 es igual a \" hola \ "\ n";
20 más
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 más
27 salida + = "s1 no es igual a \" hola \ "\ n";
Método es igual a las pruebas de dos objetos para la igualdad mediante la comparación lexicográfica
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
Línea 30
Líneas 36-40
Línea 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 más
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 (mayúsculas y minúsculas)
43 if (s3.regionMatches (0, s4, 0, 5))
44 de salida + = "Primeros 5 caracteres del partido s3 y s4 \ n";
45 más
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 más
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
Método compareTo compara objetos String
Método 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 producción,
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
Línea 15
Línea 24
1 // Fig. 11.4: StringStartEnd.java
2 // métodos de Cuerda startsWith y endsWith.
3 javax.swing importación. *;
4
5 pública clase StringStartEnd {
6
7 público estático void main (String args [])
8 {
9 cadenas String [] = {"empezaron", "a partir de", "terminó", "final"};
10 String salida = "";
11
12 // Método 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 // Método de prueba startsWith partir de la posición
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 posición 2 \ n ";
Método startsWith determina si la cadena comienza con caracteres específicos
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringStartEnd.java
Línea 33
27
28 salida + = "\ n";
29
30 // Método 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 producción,
37 "Las comparaciones clase String", JOptionPane.INFORMATION_MESSAGE);
38
39 System.exit (0);
40}
41
42} // fin de la clase StringStartEnd
Método endsWith determina si la cadena termina con caracteres específicos
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.3.4 Localización de caracteres y subcadenas en Cuerdas
Búsqueda de caracteres en cadena Método indexOf
Método lastIndexOf
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringIndexMethods.java
Líneas 12-16
Líneas 19-26
1 // Fig. 11.5: StringIndexMethods.java
2 // Cuerda métodos de búsqueda indexOf y lastIndexOf.
3 javax.swing importación. *;
4
5 pública StringIndexMethods clase {
6
7 público estático void main (String args [])
8 {
9 cartas de Cuerda = "abcdefghijklmabcdefghijklm";
10
11 // Test indexOf para localizar un carácter 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 carácter 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
Método indexOf encuentra primera aparición del personaje en Cadena
Método lastIndexOf encuentra la última ocurrencia del carácter en cadena
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringIndexMethods.java
Líneas 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 producción,
49 "Cuerda métodos de búsqueda", JOptionPane.INFORMATION_MESSAGE);
50
51 System.exit (0);
52}
53
54} // fin de la clase StringIndexMethods
Métodos indexOf y lastIndexOf también puede encontrar las apariciones de subcadenas
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringIndexMethods.java
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.3.5 Extracción Subcadenas de Cuerdas Crear cadena s de otra cadena s Método subcadena
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
SubString.java
Línea 13
Línea 16
1 // Fig. 11.6: SubString.java
2 // Cuerda métodos de clase subcadena.
3 javax.swing importación. *;
4
5 pública clase subcadena {
6
7 público estático void main (String args [])
8 {
9 cartas de Cuerda = "abcdefghijklmabcdefghijklm";
10
11 // métodos 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 producción,
19 "String substring métodos", 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 Método Concatenar dos objetos String
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringConcatenation.java
Línea 14
Línea 15
1 // Fig. 11.7: StringConcatenation.java
2 método concat // String.
3 javax.swing importación. *;
4
5 pública clase StringConcatenation {
6
7 público estático void main (String args [])
8 {
9 s1 String = new String ("Happy");
10 s2 String = new String ("Cumpleaños");
11
12 String salida = "s1 =" + s1 + "\ ns2 =" + s2;
13
14 salida + = "\ n \ nResult de s1.concat (s2) =" + s1.concat (s2);
15 salida + = "\ ns1 después de concatenación =" + s1;
16
17 JOptionPane.showMessageDialog (null, la producción,
18 "Método 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 método concat
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.3.7 Varios Métodos de Cuerda Varios métodos de Cuerda Regreso copias modificadas de cuerdas
Volver matriz de caracteres
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringMiscellaneous2.java
Línea 17
Línea 20
Línea 21
Línea 24
1 // Fig. 11.8: StringMiscellaneous2.java
2 // métodos de Cuerda reemplazan, toLowerCase, toUpperCase, asiento y ToCharArray.
3 javax.swing importación. *;
4
5 pública clase StringMiscellaneous2 {
6
7 público estático void main (String args [])
8 {
9 s1 String = new String ("hola");
10 s2 String = new String ("adiós");
11 Cadena s3 = new String ("espacios");
12
13 String salida = "s1 =" + s1 + "\ ns2 =" + s2 + "\ ns3 =" + s3;
14
15 // Método 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 // Método de ajuste de prueba
24 salida + = "\ n \ ns3 después del ajuste = \" "+ s3.trim () +" \ "";
25
Utilice el método toUpperCase para volver copia s1 en el que cada personaje es mayúscula
Utilice el método del ajuste para volver copia s3 en el que se elimina el espacio en blanco
Utilice el método toLowerCase para volver copia s2 en el que cada personaje es mayúscula
Utilice el método 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
Línea 27
26 // Método 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 producción,
34 "Los métodos adicionales de Cuerda", JOptionPane.INFORMATION_MESSAGE);
35
36 System.exit (0);
37}
38
39} // fin de la clase StringMiscellaneous2
Utilice el método ToCharArray regresar matriz de caracteres de s1
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.3.8 Cadena Método valueOf Cadena proporciona métodos estáticos de clase Método valueOf
String representación del objeto, datos, etc.
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringValueOf.java
Líneas 20-26
1 // Fig. 11.9: StringValueOf.java
2 métodos // Cadena valueOf.
3 javax.swing importación. *;
4
5 pública clase StringValueOf {
6
7 público estático void main (String args [])
8 {
9 Char charArray [] = {'a', 'b', 'c', 'd', 'e', 'f'};
10 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 asignación 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);
método estático valueOf de la clase String devuelve representación String de varios tipos
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringValueOf.java
27
28 JOptionPane.showMessageDialog (null, la producción,
29 "métodos valueOf cadena", JOptionPane.INFORMATION_MESSAGE);
30
31 System.exit (0);
32}
33
34} // fin de la clase StringValueOf
2003 Prentice Hall, Inc. Todos los derechos reservados.
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 dinámicos
es decir, modificable Cadena s
Puede almacenar caracteres basado en la capacidad
Capacidad expande dinámicamente para manejar caracteres
adicionales
Utiliza los operadores + y + = para la concatenación 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
Línea 9
Línea 10
Línea 11
Líneas 13-15
1 // Fig. 11.10: StringBufferConstructors.java
2 constructores // StringBuffer.
3 javax.swing importación. *;
4
5 pública StringBufferConstructors clase {
6
7 público estático 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 producción,
18 "constructores", StringBuffer JOptionPane.INFORMATION_MESSAGE);
19
20 System.exit (0);
21}
22
23} // fin de la clase StringBufferConstructors
Por defecto constructor crea StringBuffer vacío con capacidad de 16 caracteres
Segundo constructor crea StringBuffer vacío con capacidad de (10) caracteres especificados
En tercer constructor crea StringBuffer con la cadena "hola" y capacidad de 16 caracteres
ToString método devuelve representación String de StringBuffer
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.4.2 Métodos StringBuffer longitud, capacidad, setLength y ensureCapacity
Longitud Método Longitud Volver StringBuffer
Capacidad de Método Regreso capacidad StringBuffer
Método setLength Aumentar o disminuir la longitud StringBuffer
Método ensureCapacity
Establecer la capacidad StringBuffer
Garantizar que StringBuffer tiene capacidad mínima
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringBufferCapLen.java
Línea 12
Línea 12
Línea 14
Línea 17
1 // Fig. 11.11: StringBufferCapLen.java
2 // StringBuffer longitud, setLength, capacidad y ensureCapacity métodos.
3 javax.swing importación. *;
4
5 pública clase StringBufferCapLen {
6
7 público estático void main (String args [])
8 {
9 búfer StringBuffer = new StringBuffer ("Hola, ¿cómo estás?");
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 producción,
22 "Longitud de StringBuffer y Métodos de capacidad",
23 JOptionPane.INFORMATION_MESSAGE);
24
Longitud método devuelve longitud StringBuffer
Capacidad método devuelve la capacidad StringBuffer
Utilice el método ensureCapacity para establecer capacidad para 75
Utilice el método setLength para establecer la longitud de 10
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringBufferCapLen.java
Sólo los 10 personajes de StringBuffer se imprimen
25 System.exit (0);
26}
27
28} // fin de la clase StringBufferCapLen
Sólo los 10 personajes de StringBuffer se imprimen
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.4.3 StringBuffer Métodos charAt, setCharAt, getChars y reversa
La manipulación de caracteres StringBuffer Método charAt
Regreso carácter StringBuffer en el índice especificado
Método setCharAt
Conjunto de caracteres StringBuffer en el índice especificado
GetChars Método
Regreso matriz de caracteres de StringBuffer
Método inverso
Invierta contenidos StringBuffer
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringBufferChars.java
Líneas 12-13
Línea 16
Líneas 22-23
1 // Fig. 11.12: StringBufferChars.java
2 métodos // StringBuffer charAt, setCharAt, GetChars y marcha atrás.
3 javax.swing importación. *;
4
5 pública StringBufferChars clase {
6
7 público estático void main (String args [])
8 {
9 búfer 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
Líneas 26
26 buffer.reverse ();
27 salida + = "\ n \ nbuf =" + buffer.toString ();
28
29 JOptionPane.showMessageDialog (null, la producción,
30 "métodos de carácter StringBuffer",
31 JOptionPane.INFORMATION_MESSAGE);
32
33 System.exit (0);
34}
35
36} // fin de la clase StringBufferChars
Caracteres inversas en StringBuffer
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.4.4 StringBuffer anexar Métodos Append Método Permitir que los valores de datos que se añadirán a StringBuffer
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringBufferAppend.java
Línea 21
Línea 23
Línea 25
Línea 27
1 // Fig. 11.13: StringBufferAppend.java
2 // StringBuffer anexar métodos.
3 javax.swing importación. *;
4
5 pública clase StringBufferAppend {
6
7 público estático void main (String args [])
8 {
9 Objeto ObjectRef = "hola";
10 cadena String = "adiós";
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 búfer 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 "adiós"
Anexar "abcdef"
Anexar "abc"
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringBufferAppend.java
Línea 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 "Tampón =" + buffer.toString (), "StringBuffer anexar Métodos",
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 Inserción y Métodos de eliminación
Método de inserción Permitir que los valores de tipo de datos que se insertan en StringBuffer
Métodos eliminar y deleteCharAt Permitir caracteres para ser removidos de StringBuffer
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringBufferInsert.java
Líneas 20-26
1 // Fig. 11.14: StringBufferInsert.java
2 métodos // StringBuffer insertar y eliminar.
3 javax.swing importación. *;
4
5 pública clase StringBufferInsert {
6
7 público estático void main (String args [])
8 {
9 Objeto ObjectRef = "hola";
10 cadena String = "adiós";
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 búfer 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 método de inserción para insertar datos en comienzo de StringBuffer
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StringBufferInsert.java
Líneas 27-38
Línea 42
Línea 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 después 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 después de eliminaciones: \ n" + buffer.toString ();
46
47 JOptionPane.showMessageDialog (null, la producción,
48 "StringBuffer insertar / eliminar", JOptionPane.INFORMATION_MESSAGE);
49
50 System.exit (0);
51}
52
53} // fin de la clase StringBufferInsert
Use el método de inserción para insertar datos en comienzo de StringBuffer
Utilice el método deleteCharAt para eliminar el carácter 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
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.5 Clase Personajes Tratar variables primitivas como objetos Clases Tipo de contenedor
Boolean
Personaje
Doble
Flotador
Byte
Corto
Entero
Largo
Examinamos la clase de personaje
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StaticCharMethods.java
1 // Fig. 11.15: StaticCharMethods.java
2 métodos de prueba del carácter // estáticas y métodos de conversión caso.
3 import java.awt. *;
4 java.awt.event importación. *;
5 javax.swing importación. *;
6
7 pública clase StaticCharMethods extiende JFrame {
8 privado Char c;
9 privada promptLabel JLabel;
10 privada inputField JTextField;
11 privada areaSalida JTextArea;
12
13 // Constructor construye GUI
14 StaticCharMethods públicos ()
15 {
16 super ("Métodos de carácter estático");
17
18 Container contenedor = getContentPane ();
19 container.setLayout (new FlowLayout ());
20
21 promptLabel = new JLabel ("Introduzca un carácter 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 anónima
28
29 // Evento mango campo de texto
30 público 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 anónima
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 tamaño 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
Línea 54
Línea 56
Línea 58
Línea 59
Línea 60
Líneas 61-62
50 // Ver información de carácter en areaSalida
51 privado anular buildOutput ()
52 {
53 outputArea.setText ("se define:" + Character.isDefined (c) +
54 "Dígitos \ nis:" + Character.isDigit (c) +
55 "Primer carácter 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 dígito:" + Character.isLetterOrDigit (c) +
61 "\ Nis minúsculas:" + Character.isLowerCase (c) +
62 "\ Nis mayúsculas:" + Character.isUpperCase (c) +
63 "\ Na mayúsculas:" + Character.toUpperCase (c) +
64 "\ Na minúsculas:" + Character.toLowerCase (c));
65}
66
67 // Crear StaticCharMethods objeto de comenzar la ejecución
68 público estático void main (String args [])
69 {
70 StaticCharMethods aplicación = nuevos StaticCharMethods ();
71 application.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
72}
73
74} // fin de la clase StaticCharMethods
Determinar dígitos Unicode si c se define
Determinar si c puede ser utilizado como primer carácter de identificador
Determinar si c se puede utilizar como carácter identificador
Determinar si c es una letra
Determine si c es letra o dígito
Determinar si c es mayúscula o minúscula
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 métodos de conversión de caracteres // estáticas.
3 import java.awt. *;
4 java.awt.event importación. *;
5 javax.swing importación. *;
6
7 pública clase StaticCharMethods2 extiende JFrame {
8 privado Char c;
9 privado int dígitos, radix;
10 prompt1 JLabel privado, prompt2;
11 JTextField entrada privada, radixField;
12 privada JButton Tochar, Toint;
13
14 // Constructor construye GUI
15 StaticCharMethods2 público ()
16 {
17 super ("carácter de conversión Métodos");
18
19 Container contenedor = getContentPane ();
20 container.setLayout (new FlowLayout ());
21
22 prompt1 = new JLabel ("Introduzca un dígito o carácter");
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
Línea 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 dígitos al carácter");
33 toChar.addActionListener (
34
35 new ActionListener () {// clase interna anónima
36
37 // Manejar evento Tochar JButton
38 público void actionPerformed (ActionEvent ActionEvent)
39 {
40 dígitos = Integer.parseInt (input.getText ());
41 radix = Integer.parseInt (radixField.getText ());
42 JOptionPane.showMessageDialog (null,
43 "Convertir dígitos al personaje:" +
44 Character.forDigit (dígito, radix));
45}
46
47} // fin de la clase interna anónima
48
49); // fin de la llamada a addActionListener
50
Utilice el método forDigit convertir int dígitos para el número de caracteres del sistema especificado
por int radix
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StaticCharMethods2.java
Línea 64
51 Toint = new JButton ("Convertir personaje dígitos");
52 toInt.addActionListener (
53
54 new ActionListener () {// clase interna anónima
55
56 // Manejar evento Toint JButton
57 público 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 dígitos:" +
64 Character.digit (c, radix));
65}
66
67} // fin de la clase interna anónima
68
69); // fin de la llamada a addActionListener
70
71 contenedor.add (Tochar);
72 contenedor.add (Toint);
73 setSize (275, 150); // establecer el tamaño de la ventana
74 setVisible (true); // mostrar la ventana
75}
Utilice el método dígitos para convertir carbón c para entero número del sistema especificado por int
radix
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
StaticCharMethods2.java
76
77 // Crear StaticCharMethods2 objeto ejecutar la aplicación
78 público estático 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
Líneas 12-15
1 // Fig. 11.17: OtherCharMethods.java
2 // métodos carácter no estáticos.
3 javax.swing importación. *;
4
5 pública OtherCharMethods clase {
6
7 público estático void main (String args [])
8 {
C1 = 9 Carácter nuevo personaje ('A');
C2 10 caracteres = new Carácter ('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 más
18 salida + = "\ n \ nc1 y c2 no son iguales";
19
20 JOptionPane.showMessageDialog (null, la producción,
21 "métodos de carácter no estáticos",
22 JOptionPane.INFORMATION_MESSAGE);
23
24 System.exit (0);
25}
26
27} // fin de la clase OtherCharMethods
Personajes métodos no estáticos 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
Línea 24
1 // Fig. 11.18: TokenTest.java
2 clase // StringTokenizer.
3 import java.util. *;
4 import java.awt. *;
5 java.awt.event importación. *;
6 javax.swing importación. *;
7
8 pública 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 público ()
15 {
16 súper ( "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
Línea 33 Línea 36 Líneas 38-39
25 inputField.addActionListener (
26
27 nueva ActionListener () { // clase interna anónima
28
29 // Evento campo de texto mango
30 público anular actionPerformed (ActionEvent evento)
31 {
32 fichas StringTokenizer =
33 nueva StringTokenizer (event.getActionCommand ());
34
35 outputArea.setText ( "Número 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 anónima
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 tamaño 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 número 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 aplicación
56 público estático 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 Simulación Desarrollar aplicaciones DeckOfCards Crear baraja de 52 cartas con objetos Card
Se ocupa del usuario tarjeta haciendo clic "Trato botón de la tarjeta "
Usuario baraja cubierta haciendo clic en "Aleatorio botón de tarjetas "
Utilice generación aleatoria de números
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
DeckOfCards.java
Líneas 19 y 29 de la línea 30
1 // Fig. 11.19: DeckOfCards.java
2 // barajar y el programa que trata.
3 import java.awt. *;
4 importación java.awt.event. *;
5 de importaciones javax.swing. *;
6
7 públicas clase DeckOfCards extiende JFrame {
8 privada cubierta de la tarjeta [];
9 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 públicas DeckOfCards ()
16 {
17 súper ( "Tarjeta Programa de Negociación" );
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
Más 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
Líneas 27-29
Línea 43
Línea 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 anónima
39
40 // Contrato de un tarjeta
41 público 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 MÁS TARJETAS PARA TRATAR" );
51 statusLabel.setText ( "tarjetas Aleatorio para continuar" );
52 }
Llenar matriz cubierta con Tarjetas
Cuando el usuario pulsa el botón Tarjeta de Deal, método dealCard consigue siguiente carta en la
matriz cubierta
Display Card en JTextField
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
DeckOfCards.java
Línea 70
54
55 } // fin de la clase interna anónima
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 anónima
65
66 // Cubierta aleatoria
67 público 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 anónima
75
76 ); // fin de la llamada a addActionListener
77
78 contenedor.add (shuffleButton);
Cuando el usuario pulsa el botón Aleatorio Tarjetas, método aleatorio baraja tarjetas
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
DeckOfCards.java
Líneas 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 tamaño de la ventana
88 setVisible ( verdadero ); // espectáculo 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
Líneas 108-116 Líneas 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 aplicación
119 público estático void principales (String args [])
120 {
121 DeckOfCards aplicación = nuevos DeckOfCards ();
122
123 application.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE );
124 }
125
126 } // fin de la clase DeckOfCards
127
Si la cubierta no está vacía, se devuelve una referencia de objeto Tarjeta; de lo contrario, se devuelve
nulo
Método setEnabled activa y desactiva JButton
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
DeckOfCards.java Líneas 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 pública Card (String cardFace, Cadena cardSuit)
135 {
136 face = cardFace;
137 traje = cardSuit;
138 }
139
140 // Devuelve Cadena represenation de tarjeta
141 pública 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 específica, respectivamente
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.8 Expresiones regulares, Clase Patrón y clase Matcher
Expresión regular
Secuencia de caracteres y símbolos
Definir un conjunto de cuerdas
Clase Modelo Una expresión regular inmutable
Clase Partido Una operación de la expresión regular de juego
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.8 Expresiones regulares, Clase Patrón y clase Matcher
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.8 Expresiones regulares, Clase Patrón y clase Matcher
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
ValidateFrame.java
1 // Fig. 11.21: ValidateFrame.java
2 // información de usuario Validar el uso de expresiones regulares.
3 import java.awt. *;
4 importación java.awt.event. *;
5 de importaciones javax.swing. *;
6
7 pública clase ValidateFrame extiende JFrame {
8 privada JTextField phoneTextField, zipTextField, stateTextField,
9 cityTextField, addressTextField, firstTextField, lastTextField;
10
11 público ValidateFrame ()
12 {
13 súper ( "Validar" );
14
15 // crear los componentes GUI
16 JLabel phoneLabel = nueva JLabel ( "Teléfono" );
17 JLabel zipLabel = nueva JLabel ( "Zip" );
18 JLabel stateLabel = nueva JLabel ( "Estado" );
19 JLabel cityLabel = nueva JLabel ( "Ciudad" );
20 JLabel direcciónEtiqueta = nueva JLabel ( "Dirección" );
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 público 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 (direcciónEtiqueta);
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 teléfono = 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 aplicación
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 (teléfono);
81 contenedor.add (ok);
82
83 setSize ( 325 , 225 );
84 setVisible ( verdadero );
85
86 } // fin del constructor ValidateFrame
87
88 público estático 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 Líneas 109-118
95 privado anular validateDate ()
96 {
97 // asegurar que no hay cuadros de texto están vacías
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 ( "" )) // condición final
105
106 JOptionPane.showMessageDialog ( este , "Por favor, complete todos los campos" );
107
108 // si primer formato nombre del show inválida mensaje
109 más si (! firstTextField.getText (). coincida ( "[AZ] [a-zA-Z] *" ))
110 JOptionPane.showMessageDialog ( esto , "no válido nombre" );
111
112 // si la última formato de nombre espectáculo inválida mensaje
113 más si (! lastTextField.getText (). coincida ( "[AZ] [a-zA-Z] *" ))
114 JOptionPane.showMessageDialog ( esto , "no válido apellido" );
115
116 // si el formato de dirección no válida mensaje espectáculo
117 más si (! addressTextField.getText (). Correspondencias (
118 "\\ \\ D + s + ([a-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))
119 JOptionPane.showMessageDialog ( este , "la dirección no válida" );
120
Partidos devuelve true si la cadena coincide con la expresión regular
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
ValidateFrame.java Líneas 122-137
121 // si el formato de la ciudad no válido mensaje espectáculo
122 más si (! cityTextField.getText (). Correspondencias (
123 "([A-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))
124 JOptionPane.showMessageDialog ( este , "la ciudad no válida" );
125
126 // si el formato estado no válido mensaje espectáculo
127 más si (! stateTextField.getText (). Correspondencias (
128 "([A-zA-Z] + | [a-zA-Z] + \\ s [a-zA-Z] +)" ))
129 JOptionPane.showMessageDialog ( este , "el estado no válido" );
130
131 // si el formato código postal válido mensaje espectáculo
132 más si (! zipTextField.getText (). los partidos ( "\\ d {5}" ))
133 JOptionPane.showMessageDialog ( este , "código postal válido" );
134
135 // si el formato número de teléfono válido mensaje espectáculo
136 más si (! phoneTextField.getText (). Correspondencias (
137 "[1-9] \\ d {2} - [1-9] \\ d {2} - \\ d {4}" ))
138 JOptionPane.showMessageDialog ( este , "el número de teléfono válido" );
139
140 demás // información es válida, el usuario de la señal
141 JOptionPane.showMessageDialog ( este , "Gracias" );
142
143 } // fin del método validateDate
144
145 } // fin de la clase ValidateFrame
Partidos devuelve true si la cadena coincide con la expresión regular
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
ValidateFrame.java
Mensaje de error si TextBox deja en blanco
Señal 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 Línea 15 Línea 20 Línea 26
1 // Fig. 11.23: RegexSubstitution.java
2 // El uso de métodos replaceFirst, ReplaceAll y dividida.
3 de importación javax.swing. *;
4
5 pública clase RegexSubstitution
6 {
7 público estático 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 intercalación'
20 firstString = firstString.replaceAll ( "estrellas" , "CARET" );
21
22 de salida + = signos de intercalación "\ 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 intercalación"
Vuelva a colocar cada palabra en firstString con "palabra"
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
RegexSubstitution.java Línea 32 Línea 38
27
28 salida + = "\ n \ nOriginal Cadena 2:" + secondString;
29
30 // reemplazar tres primeros dígitos con 'dígito'
31 para ( int i = 0 ; i < 3 ; i ++)
32 secondString = secondString.replaceFirst ( "\\ d" , "dígitos" );
33
34 salida + = "\ Nfirst 3 dígitos reemplazados por \" dígitos \ ":" +
35 secondString;
36 salida + = "\ nSTRING divide en comas: [" ;
37
38 String [] = secondString.split resultados ( "\\ s *" ); // división 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 añadir 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 método principal
50
51 } // fin de la clase RegexSubstitution
replaceFirst sustituye a una sola aparición de la expresión regular
dividida vuelve matriz de subcadenas entre los partidos de la expresión regular
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
RegexSubstitution.java
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
RegexMatches.java Líneas 13-14 Línea 22
Línea 24
Línea 25
1 // Fig. 11.24: RegexMatches.java
2 // Demostración de clases Pattern y Matcher.
3 de importación java.util.regex. *;
4 importación javax.swing. *;
5
6 clase RegexMatches
7 {
8 público estático void principales (String args [])
9 {
10 String salida = "" ;
11
12 // crear expresiones regulares
13 expresión del patrón =
14 Pattern.compile ( "J * \\ d [0-35-9] - \\ d \\ d - d \\ \\ d." );
15
16 cadena1 String = "El cumpleaños de Jane es 5.12.75 \ n" +
17 "Dave cumpleaños es 4.11.68 \ n" +
18 "El cumpleaños de Juan es 4.28.73 \ n" +
19 "El cumpleaños de Joe es 12/17/77" ;
20
21 // partido expresión regular a los partidos de cuerda y de impresión
22 Matcher matcher = expression.matcher (cadena1);
23
24 mientras que (matcher.find ())
25 salida + = matcher.group () + "\ n" ;
compilación crea un objeto de expresiones regulares inmutables
matcher asocia un objeto patrón con una cadena
hallazgo pone la primera subcadena que coincide con la expresión 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 práctico opcional) Acerca de los objetos: Manipulación Evento
¿Cómo interactúan los objetos Envío de objeto envía un mensaje a un objeto que recibe
Se discute cómo los objetos del sistema de ascensor interactúan
El comportamiento del sistema Modelo
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento
Evento Mensaje que notifica a un objeto de una acción
Acción: Ascensor llega al piso
Consecuencia: Ascensor envía evento elevatorArrived a Puerta
Elevator 's
es decir, la puerta está "notificó" que ha llegado Ascensor
Acción: se abre la puerta Elevator 's
Consecuencia: Puerta envía evento doorOpened a persona
es decir, la persona se "notificó" que ha abierto la puerta
Estructura de denominación preferido
Sustantivo ( "ascensor") precedido de verbo ("llegó")
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
ElevatorSimulationEvent.java
Línea 8
Línea 11 Línea 14
1 // ElevatorSimulationEvent.java
2 // Básica paquetes evento sosteniendo objeto Ubicación
3 paquete com.deitel.jhtp5.elevator.event;
4
5 // paquetes Deitel
6 importación com.deitel.jhtp5.elevator.model. *;
7
8 public class ElevatorSimulationEvent {
9
10 // Ubicación que generó ElevatorSimulationEvent
11 privada ubicación Ubicación;
12
13 // fuente de generada ElevatorSimulationEvent
14 privada fuente de objetos;
15
16 // ElevatorSimulationEvent constructor establece Ubicación
17 pública ElevatorSimulationEvent (fuente de objetos,
18 la ubicación, ubicación)
19 {
20 setFuente (fuente);
21 setLocation (ubicación);
22 }
23
Representa un evento en la simulación del ascensor
Lugar de referencia objeto representa la ubicación 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 Ubicación
25 public void setLocation (Lugar Eventlocation)
26 {
27 ubicación = Eventlocation;
28}
29
30 // obtener ElevatorSimulationEvent Ubicación
31 pública Ubicación getLocation ()
32 {
33 volver ubicación;
34 }
35
36 // establecer fuente ElevatorSimulationEvent
37 private void setFuente (EventSource Object)
38 {
39 fuente = EventSource;
40 }
41
42 // get source ElevatorSimulationEvent
43 pública getSource Object ()
44 {
45 volver fuente;
46 }
47 }
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento
Objetos envían ElevatorSimulationEvent Esto puede llegar a ser confuso
Puerta envía ElevatorSimulationEvent a persona al abrir
Ascensor envía ElevatorSimulationEvent a Puerta a la llegada
Solución:
Crear varias subclases ElevatorSimulationEvent
Cada subclase representa mejor la acción
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 generalización 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 ElevatorSimulationEvent2003 Prentice Hall, Inc. Todos los derechos reservados.
11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento
Manejo de eventos Similar a la colaboración
Objeto envía el mensaje (evento) a los objetos
Sin embargo, la recepción 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 práctico opcional) Acerca de los objetos: Manipulación Evento
Modificar diagrama de colaboración de la Fig. 7.19 Incorporar el manejo de eventos (Fig. 11.28)
Tres cambios
Incluir notas
Explicaciones sobre gráficos UML
Representada como rectángulos con esquinas "doblada"
Todas las interacciones ocurren en el primer piso
Elimina la ambigüedad de nombres
Incluya eventos
Ascensor informa objetos de la acción que ha ocurrido
Ascensor notifica objeto de llegada
2003 Prentice Hall, Inc. Todos los derechos reservados.
Fig. 11.28 diagrama de colaboración 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 (Ubicación)
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 práctico opcional) Acerca de los objetos: Manipulación Evento
Los detectores de eventos Ascensor envía ElevatorMoveEvent
Todas las clases de eventos (en nuestra simulación) tienen esta
estructura
La puerta debe implementar la interfaz que "escucha" para este evento
Puerta implementa la interfaz ElevatorMoveListener
Método elevatorArrived
Se invoca cuando llega Ascensor
Método 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 importación com.deitel.jhtp5.elevator.model. *;
7
8 public class ElevatorMoveEvent extiende ElevatorSimulationEvent {
9
10 // ElevatorMoveEvent constructor
11 pública ElevatorMoveEvent (fuente de objetos, ubicación, ubicación)
12 {
13 súper (fuente, ubicación);
14 }
15 }
2003 Prentice Hall, Inc.
Todos los derechos reservados.
Contorno
ElevatorMoveListener.java
1 // ElevatorMoveListener.java
2 // Métodos invocados cuando Ascensor ha ido bien o llegado
3 paquete com.deitel.jhtp5.elevator.event;
4
5 pública interfaz ElevatorMoveListener {
6
7 // Invoca cuando se ha apartado Ascensor
8 público anular elevatorDeparted (ElevatorMoveEvent moveEvent);
9
10 // Invoca cuando Ascensor ha llegado
11 público anular elevatorArrived (ElevatorMoveEvent moveEvent);
12 }
2003 Prentice Hall, Inc. Todos los derechos reservados.
11.9 (Ejemplo práctico opcional) Acerca de los objetos: Manipulación Evento
Diagrama de clases revisitado Modificar diagrama de clases de la figura. 10.28 para incluir
Señales (eventos)
por ejemplo, Ascensor señales llegada a Luz
Asociaciones de autónomos
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 gestión 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
Señales para mover
Restablece
Abre / Cierra
Ocupa
Signalsarrival
Activa / desactiva
Anillos
Puerta
Botón
Ubicación
Las señales 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