Pregunta: ¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?
Respuesta: No, no es posible debido a que numeroPi en el código al que referencia es una constante y no una variable.
public class CalculadoraMedidasCirculo
import javax.swing.*;
public class CalculadoraMedidasCirculo
{
static final Circulo circunferencia = new Circulo();/*digamos que final protege de una posible reasignacion de valor a circunferencia, por ejemplo:
supongamos que la clase Circulo cuenta con un constructor con parámetros, circunferencia = new Circulo(double parametro)*/
static JOptionPane mensaje = new JOptionPane();
public void CalculadoraMedidasCirculo()
{
}
public static void main(String []args)
{
boolean finalizado = false;
while(finalizado == false)
{
String stringRadio = mensaje.showInputDialog(null, "Introduce el radio del circulo", "Area, Longitud y Diametro de un circulo", 3);
double radio = Double.valueOf(stringRadio);
circunsferencia.setRadio(radio);
mensaje.showMessageDialog(null, "________________________________________\nArea = "
+ circunsferencia.areaCirculo() + "\n________________________________________"
+"\nLongitud = " + circunsferencia.longitudCirculo() + "\n________________________________________"
+ "\nDiametro = " + circunsferencia.diametroCirculo() + "\n________________________________________", "Resultados!", 1);
int volver = mensaje.showConfirmDialog(null,"Deseas calcular el Area, Longitud y Diámetro de otro circulo?","Confirmar",0);
if(volver == 0)
{
finalizado = false;
}
else if(volver == 1)
{
finalizado = true;
}
}
//circunsferencia = new Circulo(2.5); error por circunferencia estar declarada como constante (final).
mensaje = new JOptionPane(" "); //Compila por mensaje ser una variable y no una constante, independientemente de que esta sea static o no.
}
}
public class Circulo
public class Circulo
{
private static final double NUMERO_PI = 3.1416;
private static double radio;
//Constructor general
public Circulo()
{
radio = 0.0;
}
//Constructor con parámetros
public Circulo(double radio)
{
this.radio = radio;
}
//setter
public void setRadio(double radio)
{
this.radio = radio;
}
//getter
public double getRadio()
{
return radio;
}
//otros metodos
public double areaCirculo()
{
return NUMERO_PI*(radio*radio);
}
public double longitudCirculo()
{
return (2*NUMERO_PI)*radio;
}
public double diametroCirculo()
{
return radio*2;
}
}
Saludos!