Hola a todos !! Paso a dejar el código del ejercicio correspondiente a la entrega CU00673B del curso práctico de programación Java con entorno de aprendizaje BlueJ.
A continuación pego el enunciado del ejercicio y la solución propuesta por mi. Desde ya muchas gracias. Saludos, Luis
EJERCICIO
Define una clase Java denominada Circulo que tenga como atributo de clase (estático) y constante numeroPi, siendo esta constante de tipo double y valor 3.1416. Además la clase tendrá el atributo radio (tipo double) que representa el radio del círculo, y los métodos para obtener y establecer los atributos. También debe disponer de un método para calcular el área del círculo (método tipo funcion areaCirculo que devuelve el área) y la longitud del círculo (método tipo función que devuelve la longitud). En una clase con el método main, declara el código que cree un objeto círculo, le pida al usuario el radio y le devuelva el área y la longitud del círculo.
¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?
Primero respondo a la pregunta. No se puede hacer si declaramos al numero PI como "final". Ejemplo: static final numeroPI = 3.1416 al comienzo de la clase Circulo
Si quitaramos "final" es posible crear un método para ingresar el numero PI (aún si está definida como static) pero NO es conveniente porque se podría modificar el valor de PI y dejaría de ser una constante
Clase main donde solicita el valor del radio y muestra el área y el perimetro
// clase test para calculo del perimetro y del área de un circulo
public class Test2 {
public static void main (String [ ] args) {
String sradio = "";
double area = 0;
double perimetro = 0;
System.out.println("ingrese el valor del radio :");
EntradaDeTeclado entradaMain = new EntradaDeTeclado();
Circulo calculoCirculo = new Circulo();
entradaMain.pedirEntrada();
sradio = entradaMain.getEntrada();
double radio=Double.valueOf(sradio).doubleValue();
calculoCirculo.setRadio(radio);
area = calculoCirculo.areaCirculo();
perimetro = calculoCirculo.perimetroCirculo();
System.out.println("el area del circulo es :"+area);
System.out.println("el perimetro del circulo es :"+perimetro);
}
} //Cierre del main
Clase Circulo donde se realizan los cálculos
public class Circulo
{
// instance variables - replace the example below with your own
static final double numeroPI = 3.1416;
public double radio = 0;
public Circulo () {
}
public void setRadio(double vradio)
{
// ingreso del valor del radio del circulo
radio = vradio;
}
public double getRadio()
{
// consulta el valor del radio del circulo
return radio;
}
public double areaCirculo()
{
return numeroPI*radio*radio;
}
public double perimetroCirculo()
{
return numeroPI*2*radio;
}
}
Por último el código de la clase para el ingreso por teclado ya utilizado en ejercicios anteriores
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
private String entradaTeclado; //Variable de instancia (campo) de la clase
private int entradaNumero;
public EntradaDeTeclado () { //Constructor
entradaTeclado="";
entradaNumero=0;
// pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
} //Cierre del constructor
public void pedirEntrada () { //Método de la clase
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine ();
} //Cierre del método pedirEntrada
public void pedirNumero (){
Scanner entradaEscaner = new Scanner (System.in);
entradaNumero = entradaEscaner.nextInt ();
}
public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
public int getNumero() {return entradaNumero;}
public String getPrimeraPalabra () {
for (int i=0; i < entradaTeclado.length() - 1; i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) { //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0, i+1); }
}
return entradaTeclado; //Caso de que no se detecte ningún espacio devolvemos lo que haya
} //Cierre del método getPrimeraPalabra
public int getLongitud () { //Método de la clase
return entradaTeclado.length();
} //Cierre del método getLongitud
} //Cierre de la clase