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

Comparación de strings

Estas en el tema de Comparación de strings en el foro de Java en Foros del Web. Hola, quiero comparar los strings pasados como parametros a través del método main. El tema es que tengo un numero de strings que no se, ...
  #1 (permalink)  
Antiguo 23/10/2010, 02:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 89
Antigüedad: 15 años, 8 meses
Puntos: 1
Comparación de strings

Hola, quiero comparar los strings pasados como parametros a través del método main. El tema es que tengo un numero de strings que no se, por lo tanto puede ser infinito.

Lo que necesito hacer es por ejemplo, que si tengo como argumentos
azul
amarillo
azul
azul
verde
amarillo

que el programa muestre:
Azul repetido 3 veces
Amarillo repetido 2 veces


Muchas gracias!!!!!

Última edición por kamita; 23/10/2010 a las 03:01 Razón: más información
  #2 (permalink)  
Antiguo 23/10/2010, 03:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Comparación de strings

Cita:
Iniciado por kamita Ver Mensaje
Hola, quiero comparar los strings pasados como parametros a través del método main. El tema es que tengo un numero de strings que no se, por lo tanto puede ser infinito.

Lo que necesito hacer es por ejemplo, que si tengo como argumentos
azul
amarillo
azul
azul
verde
amarillo

que el programa muestre:
Azul repetido 3 veces
Amarillo repetido 2 veces


Muchas gracias!!!!!
Si tienes
Código:
public static void main(String[] args) {

}
args.length te dira cuantos argumentos tienes, ahora solo tienes que encerrar en un bucle lo que quieras hacer y como condicion que sea menos q args.length ya que el array empieza x 0.


Saludos,
Dani.
  #3 (permalink)  
Antiguo 23/10/2010, 04:03
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Comparación de strings

Sería algo así:

Código:
public static void main(String[] args) {

int contadorAmarillo = 0;
int contadorVerde = 0;
int contadorAzul = 0;

for (int i = 0; i < args.length; i++){
     if (args[i].equals("amarillo"){
            contadorAmarillo ++;
            continue;
     }
     if (args[i].equals("verde"){
            contadorVerde ++;
            continue;
     }
     if (args[i].equals("azul"){
            contadorAzul ++;
            continue;
     }
}
// Imprime lo que quieras a partir de aquí, usando los contadores.
}
Espero que esto te valga, un saludo!
  #4 (permalink)  
Antiguo 23/10/2010, 04:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 89
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Comparación de strings

Cita:
Iniciado por nosek159 Ver Mensaje
args.length te dira cuantos argumentos tienes, ahora solo tienes que encerrar en un bucle lo que quieras hacer y como condicion que sea menos q args.length ya que el array empieza x 0.
....
Así es como estoy empezando, el problema que tengo es que cuando intento aplicar el codigo de LeGeNDuS de

Código:
public static void main(String[] args) {

int contadorAmarillo = 0;
int contadorVerde = 0;
int contadorAzul = 0;

for (int i = 0; i < args.length; i++){
     if (args[i].equals("amarillo"){
            contadorAmarillo ++;
            continue;
     }
     if (args[i].equals("verde"){
            contadorVerde ++;
            continue;
     }
     if (args[i].equals("azul"){
            contadorAzul ++;
            continue;
     }
}
// Imprime lo que quieras a partir de aquí, usando los contadores.
}
El problema es que cuando utilizo ese código yo no se cuales van a ser los argumentos que me pongan, ni la cantidad. Entonces el problema lo tendría en que no se cuantas variables declarar al principio. Supongo que puedo declarar una variable por argumento y punto, no?
  #5 (permalink)  
Antiguo 23/10/2010, 05:06
 
Fecha de Ingreso: agosto-2008
Mensajes: 89
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Comparación de strings

Por cierto, una dudilla...ya lo tengo resuelto pero tengo un pequeño problema....
Código:
		for(int i=0; i<args.length; i++) {
			int var[i] = 0;
		}
Alguien me puede decir como tengo que expresar lo de var[i], para que no me de error pero para que al crear la variable me la reconozca como var de un número que aumenta??
Gracias...

ya empieza a dar cosa preguntar...que duro es esto de ser principiante!
  #6 (permalink)  
Antiguo 23/10/2010, 05:12
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Comparación de strings

Vale, te entiendo. Creo que te podría valer algo así:

Código:
public static void main(String[] args) {

ArrayList <ColorCantidad> colorCantidadList = new <ColorCantidad> ();
boolean encontrado;

for (int i = 0; i < args.length; i++){
      encontrado = false;
      for (ColorCantidad colorCantidad : colorCantidadList){
                if (colorCantidad.color.equals(args[i])){
                         colorCantidad.cantidad++;
                         encontrado = true;
               }
     }
     if (!encontrado)
           colorCantidadList.add(new ColorCantidad(args[i])); 
}
// Imprime lo que quieras a partir de aquí, usando los contadores. Por ejemplo:
for (ColorCantidad colorCantidad : colorCantidadList)
      System.out.println ("Color: " + colorCantidad.color + " | Apariciones: " + colorCantidad.cantidad);
}

public class ColorCantidad{
     string color;
     int cantidad;

     public ColorCantidad (string color){
           this.color = color;
           cantidad = 0;
     }
}
  #7 (permalink)  
Antiguo 23/10/2010, 05:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 9
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Comparación de strings

No sé como lo habrás solucionado Kamita, pero creo que la solución que te ofrezco es bastante versátil. Respecto a lo de los vectores, no funciona así.

Se declaran así:

int[] arrayInt = new int [15]; // por ejemplo

Y luego accedes con normalidad
  #8 (permalink)  
Antiguo 23/10/2010, 05:19
 
Fecha de Ingreso: agosto-2008
Mensajes: 89
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Comparación de strings

Vale, muchas gracias. Me has soucionado las dos cosas. Un Karma para ti! :D
Si, tu solución es mucho mejor, la mia era liosa y confusa (de principiante) xD....eran veintemil bucles y tal. Muchas gracias!!
  #9 (permalink)  
Antiguo 23/10/2010, 11:00
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Comparación de strings

Para un mejor rendimiento y evitar recorridos de bucles no necesarios, lo suyo sería implementar la lista de colores como un Map indexado por el nombre del color. Así no haría falta hacer un bucle para recorrerlo para cada elemento introducido. Con recuperarlo por clave, listo.
Además así te ahorras tener que hacer la clase ColorCantidad, que no tiene mucho sentido.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: strings
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 10:09.