Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: matru en 15 de Marzo 2016, 22:50
-
Solución planteada para el ejercicio CU00673B del tutorial de programación Java desde cero:
public class Circulo{
private static final double numeroPi = 3.1416;
private double radio;
public Circulo(){
radio = 0;
}
public void setRadio(double radio){
this.radio = radio;
}
public double getRadio(){return radio;}
public double getAreaCirculo(){
radio = radio*radio;
double area = numeroPi * radio;
return area;
}
public double getLongitudCirculo(){
double longitud = 2 * numeroPi * radio;
return longitud;
}
}
import java.util.Scanner;
public class TestCirculo{
public static void main(String []args){
Scanner entrada = new Scanner(System.in);
Circulo circulo = new Circulo();
String des ="";
boolean desicion = false;
System.out.println("Para carcular el area y la longitud de un circulo Ingrese el radio: ");
while(desicion == false){
circulo.setRadio(Double.valueOf(entrada.nextLine()));
System.out.println("El circulo tiene una longitud de: " + circulo.getLongitudCirculo() + "\nCon un Area de: "+circulo.getAreaCirculo()+"\n");
System.out.println("Si desea obtener la longitud o area de otro Circulo ingrese SI de lo contrario ingrese NO:");
do{
des = entrada.nextLine();
if(des.equalsIgnoreCase("si")){
System.out.println("Ingrese el radio: ");
des ="si";
}else if(!des.equalsIgnoreCase("si") && !des.equalsIgnoreCase("no")){
System.out.print("La palabra que ingreso no es correpta intentelo de nuevo: ");
des = "no";
}else{
System.out.println("Gracias por utilizar nuestro servicio!");
des = "si";
desicion = true;
}
}while(des.equalsIgnoreCase("no"));
}
}
}
¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi?
No
¿Por qué?
por que el valor que se le asigna a una variable de tipo final es de contenido invariable de hacerlo esto llevaría a errores.
-
Buenos días matru
Tienes un error de concepto:
public double getAreaCirculo(){
radio = radio*radio;
double area = numeroPi * radio;
return area;
}
El radio del círculo es un atributo del mismo. El radio se establece a través de un constructor o a través del método setRadio.
Si escribes radio = radio*radio; estás diciendo que el radio es igual al resultado de multiplicar el radio por sí mismo. Esto no tiene sentido, no debemos usarlo porque crea confusión: el radio es el que es, no es el resultado de multiplicarlo por sí mismo. Además con esta sentencia estás cambiando el valor del atributo, algo que no debe hacerse excepto a través del método set.
Debes corregir esto
Saludos