11 TRADUCIDAvxcv

Post on 31-Jan-2016

4 views 0 download

description

xcvxcvxcvxcvxcv

transcript

 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