• Viernes 8 de Noviembre de 2024, 20:11

Autor Tema:  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsEx  (Leído 1641 veces)

morgue11

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsEx
« en: Domingo 27 de Marzo de 2011, 07:10 »
0
Hola, soy principiante en esto de la programacion...
acabo de realizar un programa, me compila de manera correcta pero
al quererlo "correr" me manda el siguiente msj y no "corre"

El mensaje es el siguiente:


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException… 100
at primo_arreg.main(primo_arreg.java:27)




Y mi codigo es el siguiente:

import java.io.*;
import javax.swing.*;
public class primo_arreg
{
public static void main(String[]args)
{
int p[];
int c;
int i=0;
p=new int[100];
while(i<100)
{
for(int n=1;n<=500;n++)
{
c=0;
for(int d=1;d<=n;d++)
{
if(n%d==0)
{
c++;
}
}
if(c==2)
{
p=n;
i++;
}
}
}
for(int h=0;h<100;h++)
{
System.out.println((h+1)+".- "+p[h]);
}
}
}







Me podriian decirr porfavorr cual es el problema?(:

morgue11

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsEx
« Respuesta #1 en: Domingo 27 de Marzo de 2011, 18:05 »
0
U.U

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsEx
« Respuesta #2 en: Lunes 28 de Marzo de 2011, 17:35 »
0
Ok, estas tratando de encontrar los numeros primos entre el 1 y 500. La primer vez que se ejecuta el for de 1 a 500, se encuentran 94 numeros primos y al final de ese for, i vale 94. Entonces, al verificar la condicion del while, como i es menos de 100, entonces se vuelve a ejecutar el for de 1 a 500. pero como i todavia vale 94, cuando se encuentran 6 nuevos numeros primos, se llega a 100. Al encontrar el septimo numero primo, i vale 101 y es donde aparece el error.

Modifica el codigo para que veas mejor lo que te digo. Agrega un System.out.println en la parte donde incrementas i.

Código: Java
  1. ...
  2. if(c==2) {
  3.     System.out.println("n=" + n + ", i = " + i);
  4.     p[i]=n;
  5.     i++;
  6. }
  7. ...
  8.