Tutorial para crear un programa gráfico en Java que calcule el factorial de un número ingresado

En este tutorial se mostrará cómo crear un programa en el lenguaje de programación Java que ejecute una ventana gráfica donde se pedirá al usuario que ingrese un número para calcular su factorial.

Antecedentes

Antes de comenzar con el código, es necesario comprender lo básico en cuanto al cálculo del Factorial:

La fórmula para calcular el factorial de un número entero no negativo n se expresa como: n!=n×(n−1)×(n−2)×…×3×2×1

Donde:

  • n! se lee como «n factorial».
  • n es un número entero no negativo (es decir, n≥0).
  • Por convención, el factorial de 0 se define como 1, es decir, 0!=1

Ejemplo:

  • Si n=5;

5!=5×4×3×2×1=120

Propiedades del Factorial:

  1. Crecimiento rápido: El factorial de un número crece muy rápidamente a medida que n aumenta.
  2. Recursión: Se puede calcular de forma recursiva usando la relación:

n!=n×(n−1)!

Donde (n−1)! se calcula primero.

Programa que calcule el factorial de un número con Java y Swing

Para este tutorial, se utilizó el software IntelliJ IDEA, y la biblioteca Swing de Java que permite crear elementos gráficos. El código es el siguiente:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class FactorialGrafico extends JFrame {
// Elementos de la interfaz gráfica
private JTextField inputField; // Campo de entrada para el número
private JLabel resultLabel; // Etiqueta para mostrar el resultado

public FactorialGrafico() {
// Configuración de la ventana principal
setTitle("Cálculo de factorial en Java - www.masterhacks.net");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null); // Centra la ventana en la pantalla

// Crear los elementos de la interfaz
JLabel promptLabel = new JLabel("Ingresa un número para calcular su factorial:");
inputField = new JTextField(10); // Campo de texto para ingresar el número
JButton calculateButton = new JButton("Calcular Factorial"); // Botón para iniciar el cálculo
resultLabel = new JLabel("Resultado: "); // Etiqueta para mostrar el resultado

// Establecer el diseño (layout) de la ventana
setLayout(new FlowLayout());

// Agregar los elementos a la ventana
add(promptLabel);
add(inputField);
add(calculateButton);
add(resultLabel);

// Agregar acción al botón
calculateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Llama a la función de cálculo cuando se hace clic en el botón
calculateFactorial();
}
});
}

// Método para calcular el factorial
private void calculateFactorial() {
try {
int number = Integer.parseInt(inputField.getText()); // Obtener el número ingresado
if (number < 0) {
resultLabel.setText("Resultado: El número no debe ser negativo");
return;
}

long factorial = factorial(number); // Calcular el factorial
resultLabel.setText("Resultado: " + factorial); // Mostrar el resultado
} catch (NumberFormatException ex) {
resultLabel.setText("Resultado: Entrada no válida");
}
}

// Método recursivo para calcular el factorial
private long factorial(int n) {
if (n <= 1) return 1; // Caso base
return n * factorial(n - 1); // Recursión para calcular factorial
}

public static void main(String[] args) {
// Crear y mostrar la ventana
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new FactorialGrafico().setVisible(true);
}
});
}
}

Explicación del código

Declaración de elementos gráficos:

  • inputField: Se especifica el campo de texto donde el usuario ingresa el número.
  • resultLabel: Se etiqueta y se muestra el resultado del cálculo.

Constructor FactorialCalculator:

  • Se configura la ventana principal (título, tamaño y cierre).
  • Se configura el diseño y se agrega los componentes gráficos.
  • Se añade un ActionListener al botón calculateButton, que llama a calculateFactorial cuando se presiona el botón.

Método calculateFactorial:

  • Se obtiene el número ingresado y lo convierte a un entero.
  • Se verifica si el número es no negativo y, si es válido, calcula su factorial llamando al método factorial.
  • Se muestra el resultado en la etiqueta resultLabel.

Método factorial:

  • Se calcula el factorial de un número de forma recursiva.
  • Se retorna 1 si el número es menor o igual a 1 (caso base).

Método main:

  • Inicia el programa y hace visible la ventana.

Ejecución del programa:

Al ejecutar el programa, se verá algo como lo siguiente:

Si tienes alguna duda o comentario, déjalo aquí abajo!

Gracias por apoyar el libre conocimiento con tu donación!
Bitcoin: bc1q4sw9260twfcxatj8mjp7358cyvrf8whzlelyhj
Ethereum: 0xFb93D2a3c9d1A0b83EE629c2dE1725BCa192e581
Litecoin: LbFduJmHvQXcpCnwfUT7aJ4DYoWSL3iQw8
Dogecoin: D7QQVqNR5rk215A4zd2gyzV9P2bLQtZHFV
Transferencia bancaria en México:
Cuenta CLABE: 646180224401848086 Nombre: Masterhacks LATAM Banco: STP

Unete a nuestros grupos:
WhatsApp: https://chat.whatsapp.com/HcazyklpyeU4X3BF657KFQ
Telegram: https://t.me/masterhacks_net
Canal de WhatsApp https://whatsapp.com/channel/0029VaBBLCn5vKAH9NOWCl3K

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *