hola dartheliber
la Excepción que te lanza es que estas intentando acceder a una posicion de vector que no existe
por ejemplo si tu vector frec es tamaño 100 y tu haces frec[100] te lanzara ese error porque el indice màs grande que acepta es 99 (porque en java en pieza el conteo desde 0 hasta tamaño-1).
el problema radica que los numeros almacenados arreglo no corresponde a una casilla del vector frec, una solucion es que hagas màs grande el vecto frec
para tu ejemplo ya que dices que es entre 1 y 100 años
lo que tienes que hacer es en esta parte
for ( int j = 1; j <= arreglo.length; j++ )
frec[arreglo[j]]++; //aqui se detiene la ejecucion del prog y lanza excepcion
HACER ESTO
frec[arreglo[j]-1]++;
ya que los vectores en java comienza en 0 y no en uno
tu edad 1 sera la casilla 0 .. y la 100 la casilla 99.
si tu no tienes ningun otro error ahi deberia funcionar
espero verte ayudado
atte Jhosep
hola, he visto algunos post sobre frecuencias, pero a mi encargaron con edades comprendidas entre 1 y 100 años, y por eso he implementado esto:
System.out.print("Ingresa el tamaño del vector de edades-> ");
Scanner leer = new Scanner(System.in);
int t = leer.nextInt();
Random edad = new Random();
System.out.println("Tamaño -> "+t);
int[] arreglo = new int[t];
for(int i=0; i<arreglo.length; i++)
arreglo[i]=1+edad.nextInt(100);
for(int i=0; i<arreglo.length; i++)
System.out.println(arreglo[i]);
System.out.println("\n --- Elementos Ordenados ---");
int a=0,b=0;
burbSort(arreglo,a,b);
for(int i=0; i<arreglo.length; i++)
System.out.println(arreglo[i]);
System.out.println("\n --- Frecuencias ---");
int frec[] = new int[100];
for ( int j = 1; j <= arreglo.length; j++ )
frec[arreglo[j]]++; //aqui se detiene la ejecucion del prog y lanza excepcion
for(int i = 0; i <= t; i++){ // este segmento pinta los asteriscos
System.out.println(frec[i]);
for ( int e = 1; e < arreglo[i]; e++ )
System.out.println("*");
}
pero, nunca cuenta las frecuencias, se detiene y esta es la salida que produce al llegar al for que cuenta de las frecuencias:
--- Frecuencias ---
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 28
at frec.main(frec.java:31)
la linea 31 es: frec[arreglo[j]]++;
que se supone tendria que sumar cada ocurrencia de edad en un arreglo entre 1 y 100, para despues de acuerdo a ese numero contado pintar un asterisco.
agradezco su respuesta de antemano.saludos.