Las fórmulas para la esfera:

Área = 4 · π · radio 2

Volumen = 4/3 · π · radio 3



Utilizaremos la clase JOptionPane perteneciente a la librería Swing para el manejo de interfaces gráficas tanto para la introducción del radio de la esfera, mediante el método showInputDialog, como para mostrar el mensaje con el área y el volumen resultante, con el método showMessageDialog.

En este caso al cuadro de diálogo del resultado le pasamos como parámetro un JLabel de la librería Swing. Para cambiarle el tipo de fuente al JLabel, utilizaremos la clase Font de la librería Awt. Creamos un objeto de la clase Font y se lo asignamos al objeto de la clase JLabel creada (lblVolumen.setFont(fuente)).

En el cálculo del área y del volumen, utilizaremos de la clase Math, el método estático para calcular potencias Math.pow(a,b), (a es la base y b el exponente) y la constante Math.PI, para obtener el número π.

Con String.format(“%.2f”, porcentaje) limitamos la salida del porcentaje a 2 decimales.


import java.awt.Font;

import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class AreaVolumenEsfera {

public static void main(String[] args) {

double radio, area, volumen;

String strRadio = JOptionPane.showInputDialog(null,
"Introduce el radio de la esfera (cm)",
"Área y Volumen de una esfera",
JOptionPane.QUESTION_MESSAGE);
radio = Double.parseDouble(strRadio);
area = calcularAreaEsfera(radio);
volumen = calcularVolumenEsfera(radio);
String textoMostrar = "El área es " + String.format("%.2f", area) + " cm cuadrados";
textoMostrar += " y el volumen es " + String.format("%.2f", volumen) + " cm cúbicos.";


JLabel lblVolumen = new JLabel(textoMostrar);
Font fuente = new Font("Arial", Font.ITALIC, 17);
lblVolumen.setFont(fuente);

JOptionPane.showMessageDialog(null,
lblVolumen,
"Área y Volumen de una esfera de radio " + radio + " cm",
JOptionPane.INFORMATION_MESSAGE);
}

static double calcularAreaEsfera(double radio){
return 4 * Math.PI * Math.pow(radio, 2);
}

static double calcularVolumenEsfera(double radio){
return (4 * Math.PI * Math.pow(radio, 3)) / 3;
}
}