Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Condicion Split Duda JAVA

Estas en el tema de Condicion Split Duda JAVA en el foro de Java en Foros del Web. Hola amigos soy nuevo en el foro asi que disculpen si me he equivocado al poner esta duda sobre java: Les comento estoy haciendo una ...
  #1 (permalink)  
Antiguo 28/03/2016, 23:46
 
Fecha de Ingreso: marzo-2016
Ubicación: World Wide Web
Mensajes: 30
Antigüedad: 8 años
Puntos: 3
Pregunta Condicion Split Duda JAVA

Hola amigos soy nuevo en el foro asi que disculpen si me he equivocado al poner esta duda sobre java:

Les comento estoy haciendo una pequeño programita para detectar la dislexia he implementado codigos para ello pero me he trabado al tratar de realizar una condicion...

La cosa es tengo dos casillas (JTextField) donde ingreso una palabra en cada una, ejemplo:
TELEFONO - MATEMATICAS
Al usuario se le pide que diga que silaba se repite mas en un tercer (JTextField), ejemplo de respuesta:
TE
Al verificar estas palabras las divido en silabas quedando asi:
TE-LE-FO-NO-MA-TE-MA-TI-CAS
Luego por medio de un split obtengo las silabas que mas se repiten en estas palabras y las envio a un JTextArea con el siguiente formato:
TE/MA/
Y aqui es donde no logro efectuar que la condicion se cumpla, pues recupero el texto del JTextArea y lo comparo con la respuesta del usuario (TE) y si es igual a TE o MA del JTextArea envia "correcto" esto lo hace pero siempre que el usuario haya ingresado como respuesta la silaba ultima que esta en JTextArea, pero si es la primera envia "Incorrecto" podrian ayudarme este es mi codigo...

Código:
void contarTodas (JTextArea cal_1,JTextField rs_1, JLabel ck_1){
            
      
      
                String palabras [] = this.texto.split("-");
		String palabrasB [] = this.texto.split("-");
		
		int cantidad = palabras.length;
		
		
		for (int ii = 0; ii < cantidad; ii++) {
			int contador = 0;
                        String resultado="";
			resultado += palabras[ii];
			String palabra = palabras[ii];
			
			for (int j = 0; j < cantidad; j++) {
				
				if (palabra.equalsIgnoreCase(palabrasB[j])){
					contador++;
					palabras[j] = "";
					
				}
			}
			
			  if (contador >=2){
                              
                              cal_1.append(resultado + "/");
                              ////Aqui recupero el texto del JtextArea (cal_1)
                             String numeros = cal_1.getText();
                                ///Aqui uso otro split para separar el string ya el formato de salida
                                ///es asi: TE/MA/ 
                             String[] numerosComoArray = numeros.split("/");
                           //En esta parte recorro el arreglo 
                          for (int i = 0; i < numerosComoArray.length; i++) {
                                //rs_1 es la respuesta del usuario de la silaba que mas se repite
                               // las palabras MATEMATICAS - TELEFONO 
                               String vv = rs_1.getText().toUpperCase();
                               boolean esta = false;
                               //Aqui hago mi comparacion ya intente con 
                                //numerosComoArray[i].compareTo(vv)==0 y tambien con
                              //numerosComoArray[i].compareToIgnoreCase(vv)==0
                             
                               if(numerosComoArray[i] == vv){
                               // ck_1 es el JLabel donde envio correcto o incorrecto 
                                 ck_1.setText("Correcto");
                               esta = true;
                              }
                              else{
                                  ck_1.setText("Incorrecto");
                              }
                                        }
                               System.out.println(resultado);
                                }
                            }
                           }
Espero alguien pueda ayudarme llevo 2 días investigando y tratando por cierto trabajo en NetBeans 7.1
  #2 (permalink)  
Antiguo 29/03/2016, 11:33
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 2 meses
Puntos: 11
Respuesta: Condicion Split Duda JAVA

Es porque aqui String vv = rs_1.getText().toUpperCase(); llevas tus silabas que mas se repiten, en este caso 1. Pero si es mas de una debes llevar varias, es decir un arreglo. Para que despues puedas comparar varias, y si llevas un arreglo obvio el if debe ir en un ciclo
if(numerosComoArray[i] == vv[j]){
// ck_1 es el JLabel donde envio correcto o incorrecto
ck_1.setText("Correcto");
esta = true;
}
y al ultimo comparas los booleanos con && o con ||, eso ya depende de lo que quieras
  #3 (permalink)  
Antiguo 29/03/2016, 17:49
 
Fecha de Ingreso: marzo-2016
Ubicación: World Wide Web
Mensajes: 30
Antigüedad: 8 años
Puntos: 3
Pregunta Respuesta: Condicion Split Duda JAVA

Cita:
Iniciado por abrahamhs Ver Mensaje
Es porque aqui String vv = rs_1.getText().toUpperCase(); llevas tus silabas que mas se repiten, en este caso 1. Pero si es mas de una debes llevar varias, es decir un arreglo. Para que despues puedas comparar varias, y si llevas un arreglo obvio el if debe ir en un ciclo
if(numerosComoArray[i] == vv[j]){
// ck_1 es el JLabel donde envio correcto o incorrecto
ck_1.setText("Correcto");
esta = true;
}
y al ultimo comparas los booleanos con && o con ||, eso ya depende de lo que quieras
Hola Gracias por responder, podrias darme un ejemplo de como lo implementarías ya que la verdad lo intente de esta manera:

String [] vv= rs_1.gettext().toUpperCase(); - pero me marca error me dice que lo cambie a una cadena normal tipo String vv;

y es que rs_1 es un JtextField donde el usuario lee las palabras Matematicas - Telefono y segun al parecer del usuario responde si la silaba mas repetida es MA o TE, usualmente siempre contendra 1 sola respuesta y debe comprar con cal_1 si se encueentra una de las 2 diria correcto pero no funciona lo hace solo si pongo la ultima silaba que este detectada en cal_1 es decir TE/MA/, detecta como correcto MA pero TE no
__________________
Desbloquea esos limites...
  #4 (permalink)  
Antiguo 30/03/2016, 09:04
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Condicion Split Duda JAVA

Yo aquí veo el problema de implementar un control del numero de resultados obtenidos.

Haría lo siguiente.

List<String> vv = new ArrayList<String>();
int contador = 0;
// Recorro la primera silaba para ver cuantas repeticiones - si vv es vacio añado la silaba > vv.add(silaba)
// Al final de esta acción guardo el valor del contador en una variable para comparar
// Recorro la segunda silaba. Si el valor del contador es menor que para la anterior no hago nada, si es igual, añado la nueva sílaba a vv, y si es mayor hago vv.clear() primero para limpiar el array de valores, luego añado la nueva sílaba y establezco el nuevo valor del contador.
// Recorro el resto de elementos según estos criterios (desde el elemento 0 al último tendrás que programarlo como un bucle con las condiciones dentro aunque aquí te lo diga por separado)
// Al final te quedará vv con una o varias sílabas e incluso tendrás el valor del contador máximo en la variable de comparación, por si quieres indicar cuantas repeticiones hubo.
// Luego es sólo recorrer el array vv y componer lo que vayas a mostrar en el JLabel con las sílabas que contenga.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 31/03/2016, 23:35
 
Fecha de Ingreso: marzo-2016
Ubicación: World Wide Web
Mensajes: 30
Antigüedad: 8 años
Puntos: 3
Respuesta: Condicion Split Duda JAVA

Hola a todos, he estado probando con muchas maneras la validacion que les comente y Fuzzylog no puedo manejarlo como un array list pues me pidieron introduccion desde jtextfield (Espero no haber comprendido mal u sugerencia), bueno por ahora esa funcionando pero utilizando la declaracion siguiente
Código Java:
Ver original
  1. String rss=cal_1.getText();
  2.                                String vv=rs_1.getText();
  3.                                if(rss.contains(vv) && !"".equals(vv)){
  4.                                 ck_1.setText("Correcto");
  5.                                 oc_1.setText("Correcto");
  6.                                 ck_1.setFont(new java.awt.Font("Tahoma", 1, 12));
  7.                                 ck_1.setForeground(new java.awt.Color(0, 204, 51));
  8.                                 ck_1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagen/bien.png")));
  9.                                 esta = true;
  10.                                 }
  11.                                 else{
  12.                                     ck_1.setText("Incorrecto");
  13.                                     oc_1.setText("Incorrecto");
  14.                                     ck_1.setFont(new java.awt.Font("Tahoma", 1, 12));
  15.                                     ck_1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagen/tache.png")));
  16.                                     ck_1.setForeground(new java.awt.Color(255, 0, 0));
  17.                                 }

El único detalle ahora es que si en el JtextArea(Cal_1) existen como silabas de respuesta EL/LA/ y el usuario en su casilla(rs_1) contesta con uno de esos caracteres ya sea solo E, A , L o incluso / la toma como correcta, hay alguna forma de filtrar esto o modificar el contains

Espero sus respuestas y gracias a abrahamhs y a Fuzzylog por la ayuda que me han brindado ojala logre solucionar esto que ya me trae muy atareado
__________________
Desbloquea esos limites...

Última edición por sgrajaleshdz; 01/04/2016 a las 13:33 Razón: Falto informacion
  #6 (permalink)  
Antiguo 02/04/2016, 08:39
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Condicion Split Duda JAVA

el arraylist lo vas rellenando con las silabas que tengan la mayor repetición, luego cuando acabes, lo recorres y compones la salida del JTextField como un String con esas sílabas.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 03/04/2016, 20:09
 
Fecha de Ingreso: marzo-2016
Ubicación: World Wide Web
Mensajes: 30
Antigüedad: 8 años
Puntos: 3
De acuerdo Respuesta: Condicion Split Duda JAVA

Hola a todos, les agradesco la ayuda que me han brindado, he logrado solucionar mi problema implementando el Arraylist por lo cual doy como solucionado el tema, Gracias Fuzzylog tu implementacion dio buen resultado
__________________
Desbloquea esos limites...
  #8 (permalink)  
Antiguo 04/04/2016, 12:34
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Condicion Split Duda JAVA

Lo que me gusta de tu actitud es que lo hayas resuelto por ti mismo en vez de pedir la solución masticada

:)
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: condición, label, netbeans, split, textarea, textfield
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:16.