SoloCodigo
Programación General => Java => Mensaje iniciado por: morgue11 en Domingo 27 de Marzo de 2011, 07:10
-
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?(:
-
U.U
-
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.
...
if(c==2) {
System.
out.
println("n=" + n
+ ", i = " + i
); p[i]=n;
i++;
}
...