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

Contar el numero de repeticiones de un String en un Array

Estas en el tema de Contar el numero de repeticiones de un String en un Array en el foro de Java en Foros del Web. Hola buenos días, quería preguntarles como podría solucionar el siguiente programa. Tengo un .txt con la información relativa a varios radares de carretera en cada ...
  #1 (permalink)  
Antiguo 05/04/2010, 04:45
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Contar el numero de repeticiones de un String en un Array

Hola buenos días, quería preguntarles como podría solucionar el siguiente programa.

Tengo un .txt con la información relativa a varios radares de carretera en cada uno se me informa de lo siguite.
[Carretera] [Punto kilométrico] [Dirección de la marcha] [Velocidad Permitida] [Velocidad Real] [Matrícula] [Puntos descontados]

El .txt queraría así:
A42 85.4 A 100 128 6655DDR 3
N625 16 B 120 145 2376GBD 3
N111 4 B 90 180 4727GFY 5
A5 67.5 B 120 135 3999BRW 2
N301 123.2 A 70 78 5698DRT 0
A66 359 B 100 142 3422GTC 5
A42 32.8 A 90 99 3232FCW 0

Necesito un programa que me diga cual es la carretera con más multas. Para leer del .txt lo que he hecho es unir todas las líneas en un mismo string y más tarde cortar cada palabra por los espacios y crear un array con cada elemento.
temp[0]=A42
temp[1]=85.4
temp[2]=A
temp[3]=100
...

Por favor, podríais echarme una mano. Muchas gracias
  #2 (permalink)  
Antiguo 05/04/2010, 09:37
 
Fecha de Ingreso: febrero-2010
Mensajes: 29
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Contar el numero de repeticiones de un String en un Array

Explica un poco mas claro eso de la carretera con mas multas, en base a que datos del archivo calculas eso.....

Quizas con esa informacion pueda ayudarte
  #3 (permalink)  
Antiguo 05/04/2010, 09:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Contar el numero de repeticiones de un String en un Array

Cita:
Iniciado por tomahawk_edu Ver Mensaje
Hola buenos días, quería preguntarles como podría solucionar el siguiente programa.

Tengo un .txt con la información relativa a varios radares de carretera en cada uno se me informa de lo siguite.
[Carretera] [Punto kilométrico] [Dirección de la marcha] [Velocidad Permitida] [Velocidad Real] [Matrícula] [Puntos descontados]

El .txt queraría así:
A42 85.4 A 100 128 6655DDR 3
N625 16 B 120 145 2376GBD 3
N111 4 B 90 180 4727GFY 5
A5 67.5 B 120 135 3999BRW 2
N301 123.2 A 70 78 5698DRT 0
A66 359 B 100 142 3422GTC 5
A42 32.8 A 90 99 3232FCW 0

Necesito un programa que me diga cual es la carretera con más multas. Para leer del .txt lo que he hecho es unir todas las líneas en un mismo string y más tarde cortar cada palabra por los espacios y crear un array con cada elemento.
temp[0]=A42
temp[1]=85.4
temp[2]=A
temp[3]=100
...

Por favor, podríais echarme una mano. Muchas gracias
Primero que todo no leas todo el fichero como un string.
Trata de leer linea a Linea y has una clase para representar cada radar (Por ejemplo RadarInfo).

Despues de esto puedes obtener un arreglo de RadarInfo y a partir de ahi cuentas la cantidad de radares de las carreteras de la siguiente forma:

Haces un HashMap<String,int> tabla. Esto sirve para hacer asociaciones entre String e int. Ademas de una forma bastante eficiente.

Despues todo lo que tienes que hacer es un ciclo por todos los elementos del arreglo que leistes, agregarlo a la tabla e ir quedando con el mayor.
Aqui esta el código:

HashMap<String,int> tabla = new HashMap<String,int>();
RadarInfo[] radares; //Debe ser llenado en el método de leer datos del fichero.
String carreteraMaxima;

for (int i=0; i<radares.Count; i++)
{
int cantidad = 0;
String carretera = radares[i].getCarretera(); //Carretera Actual
if (tabla.containsKey[carretera]) //Si ya existe dicha carretera obtener la //cantidad actual
cantidad = tabla.get(carretera);
cantidad++; //Incrementar dicha cantidad
if (cantidad>max) //Chequear que sea mayor que la actual y actualizar
{
max = cantidad;
carreteraMaxima = carretera;
}
tabla[carretera] = cantidad; //Actualizar la tabla.
}

Esto debe servir; ajustalo a tu caso.
  #4 (permalink)  
Antiguo 05/04/2010, 09:42
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Contar el numero de repeticiones de un String en un Array

Cita:
Iniciado por diduch Ver Mensaje
Explica un poco mas claro eso de la carretera con mas multas, en base a que datos del archivo calculas eso.....

Quizas con esa informacion pueda ayudarte
Muchas gracias por contestar. El archivo de texto como se puede ver muestra las carreteras en las que se ha tomado una multa. En el ejemplo que he puesto en la carretera en la que más multas se han puesto es en la A42 ya que se han registrado dos multas. Quisiera saber como puedo contabilizar eso automáticamente, que pasándole el archivo de texto me diga cuál es la carretera que se repite más, es decir, la que más multas tiene.

Se ha aclarado así más?? Muchas gracias.
  #5 (permalink)  
Antiguo 05/04/2010, 09:46
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Contar el numero de repeticiones de un String en un Array

Cita:
Iniciado por alberto7D9 Ver Mensaje
Primero que todo no leas todo el fichero como un string.
Trata de leer linea a Linea y has una clase para representar cada radar (Por ejemplo RadarInfo).

Despues de esto puedes obtener un arreglo de RadarInfo y a partir de ahi cuentas la cantidad de radares de las carreteras de la siguiente forma:

Haces un HashMap<String,int> tabla. Esto sirve para hacer asociaciones entre String e int. Ademas de una forma bastante eficiente.

Despues todo lo que tienes que hacer es un ciclo por todos los elementos del arreglo que leistes, agregarlo a la tabla e ir quedando con el mayor.
Aqui esta el código:

HashMap<String,int> tabla = new HashMap<String,int>();
RadarInfo[] radares; //Debe ser llenado en el método de leer datos del fichero.
String carreteraMaxima;

for (int i=0; i<radares.Count; i++)
{
int cantidad = 0;
String carretera = radares[i].getCarretera(); //Carretera Actual
if (tabla.containsKey[carretera]) //Si ya existe dicha carretera obtener la //cantidad actual
cantidad = tabla.get(carretera);
cantidad++; //Incrementar dicha cantidad
if (cantidad>max) //Chequear que sea mayor que la actual y actualizar
{
max = cantidad;
carreteraMaxima = carretera;
}
tabla[carretera] = cantidad; //Actualizar la tabla.
}

Esto debe servir; ajustalo a tu caso.
Muchas gracias por tu trabajo. Soy bastante novato en Java, podría echarme una mano con la clase RadarInfo?? Es que no me ha quedado muy claro lo que tiene que hacer. De veras, muchísimas gracias
  #6 (permalink)  
Antiguo 05/04/2010, 11:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 15
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Contar el numero de repeticiones de un String en un Array

La clases RadarInfo es la clase que tiene los datos de un radar como dije anteriormente que según tu problema son:

[Carretera] [Punto kilométrico] [Dirección de la marcha] [Velocidad Permitida] [Velocidad Real] [Matrícula] [Puntos descontados]

Es decir:
class RadarInfo
{
public String carretera;
public double puntoKilometrico;
public char direcciónMarcha;
public int velocidadPermitida
public int velocidadReal;
public String matricula;
public int puntosDescontados;
};

Como te decía en el post anterior; cada línea genera un objeto de este tipo y todos ellos lo guardas en el arreglo radares.
Estos son problemas secundarios al que tu quieres; El problema de contar la carretera con mayor repitencia. La clave es usar el HashMap.

Cuando trabajas con arreglos tu dices:
int v = arreglos[x]
"Dame el valor que esta en la posición X"
donde X es un numero. Pero con HashMap tu también puedes decir:
int v = tabla.get(x);
donde X no necesariamente es un número puede ser un String.
Es decir los índices son String en ves de número.

Al principio cuando empiezes a trabajar con esta clase quizas te de unos errores en tiempo de ejecución por inexperiencia; pero después le cogerás la vuelta.
Suerte.
  #7 (permalink)  
Antiguo 05/04/2010, 16:23
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años
Puntos: 0
Respuesta: Contar el numero de repeticiones de un String en un Array

Muchas gracias, intentaré usarlo a ver si lo consigo.

Etiquetas: contar, numero, string
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 11:50.