Java - Factorial Iteractivo de Scanner A JOptionPane

 
Vista:
sin imagen de perfil
Val: 12
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Factorial Iteractivo de Scanner A JOptionPane

Publicado por FRANCISCO JAVIER (11 intervenciones) el 06/10/2019 10:36:11
DISCULPEN ALGUIEN QUE SEA TAN AMABLE DE AYUDARME A CONVERTIR MI PROGRAMA DE SCANNER A JOPTIONPANE...
SOLO QUIERO QUE TODOS LOS MENSAJES SALGAN EN UNA VENTANA
EJEMPLO EN JOPTIONPANE

"INGRESE EL NUMERO PARA CALCULAR FACTORIAL"
INGRESAN 5

Y POR EJEMPLO QUE SALGA

"EL RESULTADO ES"
5!= 5*4*3*2*1 = 120


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.util.Scanner;
 
public class Factorial_Interactivo {
 
    private static Scanner sc;
 
 
    private static void mostrarF(int num){
        System.out.printf("%n%d! = ", num);
        int fact = 1;
        if(num!=0){
            for(int i = num;i>0;i--){
                fact *= i;
                System.out.print(i);
                if(i>1){
                    System.out.print(" * ");
                } else {
                    System.out.print(" = ");
                }
            }
        }
        System.out.println(fact + "\n");
    }
 
    private static int leer(){
        int num;
        sc = new Scanner(System.in);
        System.out.print("Introduce un número : ");
        num = sc.nextInt();
        return num;
    }
    public static void main(String[] args) {
        int numero = leer();
        while (numero>-1) {
            mostrarF(numero);
            numero = leer();
        }
        System.out.println("\nFin del programa");
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 1.766
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Factorial Iteractivo de Scanner A JOptionPane

Publicado por Kabuto (439 intervenciones) el 06/10/2019 23:01:59
Hola.
Te propongo este código.
Dejo comentadas las líneas que dejan de ser necesarias al usar JOptionPane.

En el método mostrarF() lo que hago es construir un String con los valores del factorial y una vez terminado, lo muestro con el JOptionPane.

Para leer el número que nos da el usuario, fíjate que llamo a la clase Integer para que haga un parsing del dato introducido.
Esto es porque JOptionPane (y cualquier entrada de datos mediante componentes Swing) siempre nos va a devolver el dato en formato String.
Así que para hacer operaciones aritméticas con él, hay que transformarlo a un valor int/Integer.

Lo único que faltaría sería usar un try...catch para capturar posibles excepciones en el caso de que el usuario teclee letras en lugar de números, pero bueno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import javax.swing.JOptionPane;
 
public class Factorial_Interactivo {
 
	//private static Scanner sc;
 
 
	private static void mostrarF(int num){
		StringBuilder mensaje = new StringBuilder(num + "! = ");
		//System.out.printf("%n%d! = ", num);
		int fact = 1;
		if(num!=0){
			for(int i = num;i>0;i--){
				fact *= i;
				//System.out.print(i);
				mensaje.append(i);
				if(i>1){
					//System.out.print(" * ");
					mensaje.append(" * ");
				} else {
					//System.out.print(" = ");
					mensaje.append(" = ");
				}
			}
		}
		//System.out.println(fact + "\n");
		mensaje.append(fact);
		JOptionPane.showMessageDialog(null, mensaje.toString());
	}
 
	/*private static int leer(){
		int num;
		sc = new Scanner(System.in);
		System.out.print("Introduce un número : ");
		num = sc.nextInt();
		return num;
	}*/
 
	public static void main(String[] args) {
		int numero = 0;
		while (numero>-1) {
			numero = Integer.parseInt(JOptionPane.showInputDialog("Introduce un número:"));
			if (numero >= 2)
				mostrarF(numero);
			else
				JOptionPane.showMessageDialog(null, "Para calcular el Factorial el número ha de ser mayor o igual a 2");
		}
		//System.out.println("\nFin del programa");
		JOptionPane.showMessageDialog(null, "Fin de programa");
	}}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar