Cita:
Iniciado por tomahawk_edu 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.