07-30-2015 - Taller de Desempeño Java Gui 4

14
TALLER DE DESEMPEÑO PROGRAMA: ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN COMPETENCIA: CONSTRUIR EL SISTEMA QUE CUMPLA CON LOS REQUISITOS DE LA SOLUCIÓN INFORMÁTICA INSTRUCTOR: RONALD MARTELO CHING SENA – CENTRO PARA LA INDUSTRIA PETROQUIMICA NOMBRE COMPLETO: FECHA: N° FICHA: CALIFICACIÓN: CADENAS Ejercicio 1 Realice un programa cuya ventana tenga los siguientes elementos: - Un cuadro de texto llamado txtFrase. - Varias etiquetas. (Llámelas como quiera) - Un botón “Analizar” llamado btnAnalizar. El programa funcionará de la siguiente forma: - El usuario introducirá una frase en el cuadro de texto, y luego pulsará el botón Analizar. - Al pulsar Analizar, el programa mostrará la siguiente información en las etiquetas: o La frase en mayúsculas. o La frase en minúsculas. o Número de caracteres de la frase. o Número de caracteres de la frase sin contar los espacios. - Si el usuario pulsa Analizar cuando no hay ninguna frase introducida en el cuadro de texto, el programa debe mostrar un error emergente (JOptionPane) Codigo package trabajo4; import javax.swing.*; import java.awt.event.*; public class trabajo1 extends JFrame implements ActionListener, KeyListener{ JTextField txtFrase; JLabel eti[]= new JLabel[4]; JButton btnAnalizar; public trabajo1(){ setLayout(null); txtFrase= new JTextField();

Transcript of 07-30-2015 - Taller de Desempeño Java Gui 4

Page 1: 07-30-2015 - Taller de Desempeño Java Gui 4

TALLER DE DESEMPEÑOPROGRAMA: ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACIÓN

COMPETENCIA: CONSTRUIR EL SISTEMA QUE CUMPLA CON LOS REQUISITOS DE LA SOLUCIÓN INFORMÁTICAINSTRUCTOR: RONALD MARTELO CHING

SENA – CENTRO PARA LA INDUSTRIA PETROQUIMICA

NOMBRE COMPLETO: FECHA: N° FICHA: CALIFICACIÓN:

CADENAS

Ejercicio 1

Realice un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase.- Varias etiquetas. (Llámelas como quiera)- Un botón “Analizar” llamado btnAnalizar.

El programa funcionará de la siguiente forma:

- El usuario introducirá una frase en el cuadro de texto, y luego pulsará el botón Analizar.

- Al pulsar Analizar, el programa mostrará la siguiente información en las etiquetas:

o La frase en mayúsculas.o La frase en minúsculas.o Número de caracteres de la frase.o Número de caracteres de la frase sin contar los espacios.

- Si el usuario pulsa Analizar cuando no hay ninguna frase introducida en el cuadro de texto, el programa debe mostrar un error emergente (JOptionPane)

Codigopackage trabajo4;

import javax.swing.*;import java.awt.event.*;

public class trabajo1 extends JFrame implements ActionListener, KeyListener{JTextField txtFrase;JLabel eti[]= new JLabel[4];JButton btnAnalizar;public trabajo1(){ setLayout(null);txtFrase= new JTextField();txtFrase.setBounds(30, 120, 100, 30); add(txtFrase); for (int i = 0; i < 4; i++) { eti[i]= new JLabel(""+i); eti[i].setBounds(30, 30*i, 350, 30); add(eti[i]); } btnAnalizar= new JButton("Analizar"); btnAnalizar.setBounds(30, 170, 80, 30); add(btnAnalizar); btnAnalizar.addActionListener(this);}

Page 2: 07-30-2015 - Taller de Desempeño Java Gui 4

String cadena1,cadena,receptor=null;int c,h,con=0;public void analizar(){ receptor=txtFrase.getText(); cadena1=receptor; cadena=receptor; c= receptor.length(); eti[2].setText("Número de caracteres con espacios "+c);

eti[0].setText(cadena.toLowerCase()); eti[1].setText(cadena1.toUpperCase()); for (int i = 0; i < c; i++) { if (receptor.charAt(i)==' ') { con++; } int a=c-con; eti[3].setText("Número de caracteres sin espacios "+a ); }}

public static void main(String[] args) {

trabajo1 ventana = new trabajo1(); ventana.setSize(600, 500); ventana.setLocationRelativeTo(null); ventana.setVisible(true); }

@Override public void actionPerformed(ActionEvent ae) { if (ae.getSource()==btnAnalizar) { analizar(); } }

@Override public void keyTyped(KeyEvent ke) { }

@Override public void keyPressed(KeyEvent ke) { } @Override public void keyReleased(KeyEvent ke) { } }Ejercicio 2

Realice un programa cuya ventana tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase y otro llamado txtSubcadena.

Page 3: 07-30-2015 - Taller de Desempeño Java Gui 4

- Varias etiquetas.- Un botón “Analizar” llamado btnAnalizar.

El programa funcionará de la siguiente forma:

- El usuario introducirá una frase en el cuadro de texto txtFrase, y luego introducirá una palabra en el cuadro de texto txtSubcadena, y luego pulsará el botón Analizar.

- Al pulsar el botón, el programa debe mostrar la siguiente información:

o La posición en la que se encuentra la primera aparición de la palabra en la frase.

o La posición en la que se encuentra la última aparición de la palabra en la frase.o Mostrará el texto que hay en la frase antes de la primera palabra.o Mostrará el texto que hay en la frase después de la última palabra.

- Por ejemplo, si la frase fuera:

Un globo, dos globos, tres globos. La luna es un globo que se me escapó.

Y la palabra fuera globo, entonces la información a mostrar sería:Posición inicial: 3Posición final: 49Texto anterior: Un Texto posterior: que se me escapó

- Si la palabra no se encuentra en la frase, el programa mostrará un error emergente y no se presentará nada en las etiquetas.

Codigopackage trabajo4;

import javax.swing.*;import java.awt.event.*;import sun.util.locale.StringTokenIterator;

public class trabajo2 extends JFrame implements ActionListener {

JTextField txtFrase, txtSubcadena; JButton btnAnalizar; JLabel etiquetav[] = new JLabel[5];

public trabajo2() { setLayout(null); txtFrase = new JTextField(); txtFrase.setBounds(30, 110, 100, 30); add(txtFrase); btnAnalizar = new JButton("Analizar"); btnAnalizar.setBounds(30, 200, 80, 30); add(btnAnalizar); txtSubcadena = new JTextField(); txtSubcadena.setBounds(30, 160, 100, 30); add(txtSubcadena); btnAnalizar.addActionListener(this);

for (int i = 1; i < 5; i++) { etiquetav[i] = new JLabel("etiqueta" + i); etiquetav[i].setBounds(30, 20 * i, 200, 20); add(etiquetav[i]);

Page 4: 07-30-2015 - Taller de Desempeño Java Gui 4

} } String cadena, subcadena = null; int c, d, g; char fg;

public void procesos() { if (txtFrase.getText().isEmpty() || txtSubcadena.getText().isEmpty()) { JOptionPane.showMessageDialog(null, "llene el campo de texto"); } else { cadena = txtFrase.getText().toLowerCase(); subcadena = txtSubcadena.getText().toLowerCase(); int y=txtSubcadena.getText().length();

c = cadena.indexOf(subcadena); etiquetav[1].setText("" + c);

d = cadena.lastIndexOf(subcadena); etiquetav[2].setText("" + d); String cadenar1=cadena.substring(d+y); String cadenar2=cadena.substring(0, c); etiquetav[3].setText(cadenar2); etiquetav[4].setText(cadenar1);

}

}

public static void main(String[] args) { trabajo2 ventana = new trabajo2(); ventana.setSize(500, 500); ventana.setVisible(true); }

@Override public void actionPerformed(ActionEvent ae) { if (ae.getSource() == btnAnalizar) { procesos(); } }

}

Ejercicio 3

Realice un programa que tenga los siguientes elementos:

- Un cuadro de texto llamado txtFrase.- Un cuadro de texto llamado txtPalabra1.- Un cuadro de texto llamado txtPalabra2.- Un cuadro de texto llamado txtPalabra3.- Un cuadro de texto llamado txtPalabra4.- Varias etiquetas.- Un botón “Analizar” llamado btnAnalizar.

El programa funcionará de la siguiente forma:

- El usuario introducirá una frase en el cuadro de texto txtFrase, y tres palabras en los cuadros de texto de las palabras.

Page 5: 07-30-2015 - Taller de Desempeño Java Gui 4

- Al pulsar el botón Analizar, el programa debe indicar la siguiente información en las etiquetas:

o Indicará si la frase es igual a la palabra 1.o Indicará si la frase empieza por la palabra 2.o Indicará si la frase termina por la palabra 3.o Indicará si la palabra 4 está contenida en la frase, y en el caso de que esté

contenida, se indicará la posición inicial en la que se encuentra.

Codigopackage trabajo4;

import javax.swing.*;import java.awt.event.*;

public class trabajo3 extends JFrame implements ActionListener {

int posci; JTextField txtfrase; JTextField txtPalabra[] = new JTextField[5]; JLabel eti[] = new JLabel[5]; JButton btnAnalizar;

public trabajo3() {

setLayout(null); txtfrase = new JTextField(); txtfrase.setBounds(30, 30, 100, 30); add(txtfrase); for (int i = 1; i < 5; i++) { txtPalabra[i] = new JTextField(); txtPalabra[i].setBounds(160, 30 * i, 100, 30); add(txtPalabra[i]); eti[i] = new JLabel("Etiqueta " + i); eti[i].setBounds(300, 30 * i, 300, 30); add(eti[i]); } btnAnalizar = new JButton("Analizar"); btnAnalizar.setBounds(150, 220, 80, 30); add(btnAnalizar); btnAnalizar.addActionListener(this);

} String cadena, cadena1, cadenapalabra1, cadenapalabra2, cadenapalabra3, cadenapalabra4 = null;

public void procesar() { cadena = txtfrase.getText(); cadenapalabra1 = txtPalabra[1].getText(); cadenapalabra2 = txtPalabra[2].getText(); cadenapalabra3 = txtPalabra[3].getText();

Page 6: 07-30-2015 - Taller de Desempeño Java Gui 4

cadenapalabra4 = txtPalabra[4].getText(); for (int i = 1; i < 5; i++) {

if ( txtPalabra[i].getText().isEmpty()) { JOptionPane.showMessageDialog(null, "Falata por completar los cuadros de texto"); return; } else {

if (cadena.equals(cadenapalabra1)) { eti[1].setText("la frase con la palabra del cuadro de texto 1 coinciden"); } else { eti[1].setText("la frase con la palabra del cuadro de texto 1 NO coinciden"); } if (cadena.startsWith(txtPalabra[2].getText())) { eti[2].setText("la frase texto 2 comienza alli"); } else { eti[2].setText("la frase texto 2 no comienza alli"); } if (cadena.endsWith(txtPalabra[3].getText())) { eti[3].setText("Si termina");

} else {

eti[3].setText("no termina"); } //version 4 if (cadena.contains(txtPalabra[4].getText())) { posci = txtfrase.getText().indexOf(txtPalabra[4].getText()); eti[4].setText("la si exite en posicion " + posci); } else { eti[4].setText("la NO exite en posicion "); } } } }

public static void main(String[] args) { trabajo4.trabajo3 ventana = new trabajo3(); ventana.setSize(800, 400); ventana.setLocationRelativeTo(null); ventana.setVisible(true); }

@Override public void actionPerformed(ActionEvent ae) { if (ae.getSource() == btnAnalizar) {

procesar(); } }

}

Page 7: 07-30-2015 - Taller de Desempeño Java Gui 4

05 – Funciones básicas con cadenas 19/Sep/2009  Java búsqueda, caracteres, charAt(), comparación, compareTo(), compareToIgnoreCase(), conversión,endsWith(), equals(), equalsIgnoreCase(), función, indexOf, IndexOutOfBoundsException, lastIndexOf(), length(), método,regionMatch(), replace(), startsWith(), string, subcadenas, substring(), toLowerCase(), toUpperCase(), trim(), valueOf()  20 Comentarios

Una vez que hemos visto lo sencillo que es crear una cadena de texto vamos a echar un

vistazo a los métodos que nos permiten manipular la cadena de texto.

Si tuviésemos que ordenar dichos métodos podríamos llegar a la siguiente división:

Información básica de la cadena

Comparación de Cadenas

Búsqueda de caracteres

Búsqueda de subcadenas

Manejo de subcadenas

Manejo de caracteres

Conversión a String: valueOf()

Información básica de la cadena.length()

Nos devuelve el tamaño que tiene la cadena.

char charAt(int index)

Devuelve el carácter indicado como índice. El primer carácter de la cadena será el del

índice 0. Junto con el método .length()podemos recuperar todos los caracteres de la

cadena de texto.

Page 8: 07-30-2015 - Taller de Desempeño Java Gui 4

Hay que tener cuidado. Ya que si intentamos acceder a un índice de carácter que no existe

nos devolverá una excepciónIndexOutOfBoundsException.

Comparación de CadenasLos métodos de comparación nos sirven para comparar si dos cadenas de texto son

iguales o no. Dentro de los métodos de comparación tenemos los siguientes:

boolean equals(Object anObject)

Nos permite comparar si dos cadenas de texto son iguales. En el caso de que sean iguales

devolverá como valor "true". En caso contrario devolverá "false".

Este método tiene en cuenta si los caracteres van en mayúsculas o en minúsculas. Si

queremos omitir esta validación tenemos dos opciones. La primera es convertir las

cadenas a mayúsculas o minúsculas con los

métodos .toUpperCase() y .toLowerCase()respectivamente. Métodos que veremos más

adelante.

La segunda opción es utilizar el método equalsIgnoreCase() que omite si el carácter está

en mayúsculas o en minúsculas.

boolean equalsIgnoreCase(String anotherString)

Compara dos cadenas de caracteres omitiendo si los caracteres están en mayúsculas o en

minúsculas.

int compareTo(String anotherString)

Este método es un poco más avanzado que el anterior, el cual, solo nos indicaba si las

cadenas eran iguales o diferentes

En este caso compara a las cadenas léxicamente. Para ello se basa en el valor Unicode

de los caracteres.

Se devuelve un entero menor de 0 si la cadena sobre la que se parte es léxicamente

menor que la cadena pasada como argumento. Si las dos cadenas son iguales

léxicamente se devuelve un 0. Si la cadena es mayor que la pasada como argumento se

devuelve un número entero positivo.

Pero que es esto de “mayor, menor o igual léxicamente”. Para describirlo lo veremos con

un pequeño ejemplo.

1. s1 = "Cuervo"2. s2 = "Cuenca"3. s1.compareTo(s2);

Compararíamos las dos cadenas. Los tres primeros caracteres son iguales "Cue". Cuando

el método llega al 4 carácter tiene que validar entre la r minúscula y la n minúscula. Si

utiliza el código Unicode llegará a la siguiente conclusión.

1. (114) > n(110)

Y nos devolverá la resta de sus valores. En este caso un 4.

Page 9: 07-30-2015 - Taller de Desempeño Java Gui 4

Hay que tener cuidado, porque este método no tiene en cuenta las mayúsculas y

minúsculas. Y dichos caracteres, aún siendo iguales, tienen diferentes código. Veamos la

siguiente comparación

1. s1 = "CueRvo"2. s2 = "Cuervo"3. s1.compareTo(s2);

Nuevamente los tres caracteres iniciales son iguales. Pero el cuarto es distinto. Por un

lado tenemos la r minúscula y por otro la r mayúscula. Así:

1. R(82) < r(114)

¿Qué entero nos devolverá el método compareTo()? ¿-32?

int compareToIgnoreCase(String str)

Este método se comportará igual que el anterior. Pero ignorando las mayúsculas. Todo un

alivio por si se nos escapa algún carácter en mayúsculas 

Otros métodos para la comparación de cadenas son:

1. boolean regionMatch( int thisoffset,String s2,int s2offset,int len );

2. boolean regionMatch( boolean ignoreCase,int thisoffset,String s2, int s2offset,int 1 );

Búsqueda de caracteresTenemos un conjunto de métodos que nos permiten buscar caracteres dentro de cadenas

de texto. Y es que no nos debemos de olvidar que la cadena de caracteres no es más que

eso: una suma de caracteres.

int indexOf(int ch)

Nos devuelve la posición de un carácter dentro de la cadena de texto. En el caso de que el

carácter buscado no exista nos devolverá un -1. Si lo encuentra nos devuelve un número

entero con la posición que ocupa en la cadena.

int indexOf(int ch, int fromIndex)

Realiza la misma operación que el anterior método, pero en vez de hacerlo a lo largo de

toda la cadena lo hace desde el índice (fromIndex) que le indiquemos.

int lastIndexOf(int ch)

Nos indica cual es la última posición que ocupa un carácter dentro de una cadena. Si el

carácter no está en la cadena devuelve un -1.

int lastIndexOf(int ch, int fromIndex)

Lo mismo que el anterior, pero a partir de una posición indicada como argumento.

Page 10: 07-30-2015 - Taller de Desempeño Java Gui 4

Búsqueda de subcadenasEste conjunto de métodos son, probablemente, los más utilizados para el manejo de

cadenas de caracteres. Ya que nos permiten buscar cadenas dentro de cadenas, así como

saber la posición donde se encuentran en la cadena origen para poder acceder a la

subcadena.

Dentro de este conjunto encontramos:

int indexOf(String str)

Busca una cadena dentro de la cadena origen. Devuelve un entero con el índice a partir

del cual está la cadena localizada. Si no encuentra la cadena devuelve un -1.

int indexOf(String str, int fromIndex)

Misma funcionalidad que indexOf(String str), pero a partir de un índice indicado como

argumento del método.

int lastIndexOf(String str)

Si la cadena que buscamos se repite varias veces en la cadena origen podemos utilizar

este método que nos indicará el índice donde empieza la última repetición de la cadena

buscada.

lastIndexOf(String str, int fromIndex)

Lo mismo que el anterior, pero a partir de un índice pasado como argumento.

boolean startsWith(String prefix)

Probablemente mucha gente se haya encontrado con este problema. El de saber si una

cadena de texto empieza con un texto específico. La verdad es que este método podía

obviarse y utilizarse el indexOf(), con el cual, en el caso de que nos devolviese un 0,

sabríamos que es el inicio de la cadena.

boolean startsWith(String prefix, int toffset)

Más elaborado que el anterior, y quizás, y a mi entender con un poco menos de significado

que el anterior.

boolean endsWith(String suffix)

Y si alguien se ha visto con la necesidad de saber si una cadena empieza por un

determinado texto, no va a ser menos el que se haya preguntado si la cadena de texto

acaba con otra.

De igual manera que sucedía con el método startsWith() podríamos utilizar una mezcla

entre los métodos .indexOf() y .length() para reproducir el comportamiento de .endsWith().

Pero las cosas, cuanto más sencillas, doblemente mejores.

Métodos con subcadenasAhora que sabemos como localizar una cadena dentro de otra seguro que nos acucia la

necesidad de saber como substraerla de donde está. Si es que no nos podemos estar

quietos...

String substring(int beginIndex)

Este método nos devolverá la cadena que se encuentra entre el índice pasado como

argumento (beginIndex) hasta el final de la cadena origen.

Page 11: 07-30-2015 - Taller de Desempeño Java Gui 4

Así, si tenemos la siguiente cadena:

1. String s = "Víctor Cuervo"

El método…

1. s.substring(7)

Nos devolverá “Cuervo”.

String substring(int beginIndex, int endIndex)

Si se da el caso que la cadena que queramos recuperar no llega hasta el final de la

cadena origen, que será lo normal, podemos utilizar este método indicando el índice inicial

y final del cual queremos obtener la cadena.

Así, si partimos de la cadena...

1. String s = "En un lugar de la mancha...."

El método...

1. s.substring(6,11)

Nos devolverá la palabra “lugar”.

Hay que tener especial cuidado ya que es un error muy común el poner como índice final el índice del carácter último de la palabra a extraer. Cuando realmente es el índice + 1 de lo que queramos obtener.