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:
- Crecimiento rápido: El factorial de un número crece muy rápidamente a medida que n aumenta.
- 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óncalculateButton
, que llama acalculateFactorial
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!