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

Problemas a realizar el factorial

Estas en el tema de Problemas a realizar el factorial en el foro de Java en Foros del Web. Hola a todos, Estoy empezando en java realizando practicas para clase el problema es que tengo que realizar un factorial con arrays.Lo hecho de la ...
  #1 (permalink)  
Antiguo 10/10/2012, 11:28
Avatar de kiristof  
Fecha de Ingreso: julio-2012
Mensajes: 49
Antigüedad: 12 años, 4 meses
Puntos: 0
Problemas a realizar el factorial

Hola a todos,
Estoy empezando en java realizando practicas para clase el problema es que tengo que realizar un factorial con arrays.Lo hecho de la siguiente manera pero me aparece error al igualar el array con i.
int valor //valor que se pide al usuario para sacar el factorial
int i;
int [] a = new int [valor];
for (i=1; i <= valor; i++)
{
a[i] = i;// aqui me aparece error
variable = variable * a[i];
System.out.println(variable);
}
System.out.println("el factorial de :"+valor+"es"+variable);

Cuando lo ejecuta me hace el primer System pero al realizar el segundo donde me tiene que sacar el valor completo del factorial me aprece error en a[i]=i;
  #2 (permalink)  
Antiguo 10/10/2012, 13:25
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 10 meses
Puntos: 57
Respuesta: Problemas a realizar el factorial

El problema esta en que estas tratando de asignar un valor a un elemento del arreglo que esta fuera del rango.

Por ejemplo, si valor = 5, entonces hay 5 lugares en el arreglo de enteros y los posiciones disponibles son desde 0 hasta 4 (5 posiciones en total)
Tu estas haciendo que el ciclo for se ejecute desde 1 hasta 5, lo cual es incorrecto. Lo correcto seria que se ejecutara desde 1 hasta 4 o desde 0 hasta 4. Pero nunca debe de llegar hasta 5

Última edición por posman; 10/10/2012 a las 13:34

Etiquetas: clase, factorial
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 01:16.