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

[SOLUCIONADO] Java basico, factorial de numeros

Estas en el tema de Java basico, factorial de numeros en el foro de Java en Foros del Web. Buenas noches a todos espero que estén bien: Tengo un inconveniente con mi lógica al tratar de mostrar los factoriales del 1 al 5. Puedo ...
  #1 (permalink)  
Antiguo 07/02/2013, 22:08
 
Fecha de Ingreso: febrero-2007
Mensajes: 43
Antigüedad: 17 años, 9 meses
Puntos: 0
Java basico, factorial de numeros

Buenas noches a todos espero que estén bien:

Tengo un inconveniente con mi lógica al tratar de mostrar los factoriales del 1 al 5. Puedo listarlos, pero el acumulador no me muestra los resultados de manera correcta y no se "reinicia" para que me muestra el factorial de acuerdo al numero indicado. que me esta haciendo falta?. Anexo el código para que me puedan orientar. Muchas gracias.

import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class Ejercicio58 {
public static void main(String args[]){

int fact=1;

JTextArea areaSalida = new JTextArea();
areaSalida.setText("Numero\tFactorial\n");

for(int i=1;i<=5;i++){
for(int j=5;j>=1;j--)

fact=fact*j;
areaSalida.append(i+"\t"+fact+"\n");

}

JOptionPane.showMessageDialog(null, areaSalida,"Resultados",JOptionPane.INFORMATION_ME SSAGE);

}

}
  #2 (permalink)  
Antiguo 08/02/2013, 00:30
 
Fecha de Ingreso: febrero-2013
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Java basico, factorial de numeros

Lamento decirte que tienes un for de mas, lo que estas haciendo es entrar 5 veces a calcular el factorial de 5 y cada que entras a realizar este calculo ya tienes datos calculados anteriormente. En pocas palabras lo que estas haciendo es calcular el factorial de 5 (1*2*3*4*5=120) con el for de la letra j y despues regresas al for de la i con fact=120, por lo tanto comienzas a multiplicar el 120 en vez del 1...

Mi recomendacion, utiliza solo un for...

for(int i=1;i<=5;i++){ //Este for o el de abajo salen sobrando

for(int j=5;j>=1;j--) //Este for deberia tener corchetes como estos {} por puro control

fact=fact*j; //puedes utilizar la i en vez de la j y el resultado seria el mismo

areaSalida.append(i+"\t"+fact+"\n");

}


Espero me hayas entendido

Última edición por Omarchh; 08/02/2013 a las 00:30 Razón: Mensaje extra al final
  #3 (permalink)  
Antiguo 08/02/2013, 05:32
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 22 años, 5 meses
Puntos: 361
Respuesta: Java basico, factorial de numeros

Hola Omarchh:

Te recomiendo que utilices la etiqueta HIGHLIGHT para resaltar el código ¿Ves la diferencia?.

Código Java:
Ver original
  1. for(int i=1;i<=5;i++){           //Este for o el de abajo salen sobrando
  2.  
  3. for(int j=5;j>=1;j--)             //Este for deberia tener corchetes como estos {} por puro control
  4.  
  5. fact=fact*j;                       //puedes utilizar la i en vez de la j y el resultado seria el mismo
  6.  
  7. areaSalida.append(i+"\t"+fact+"\n");
  8.  
  9. }

Saludos.

  #4 (permalink)  
Antiguo 08/02/2013, 09:07
 
Fecha de Ingreso: febrero-2007
Mensajes: 43
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Java basico, factorial de numeros

Claro que si, es claro. Muchas gracias.

Etiquetas: basico, factorial, numeros
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 03:15.