Las funciones de círculo no se comportan como se esperaba en la clase Java
Pregunta
así que hice una clase de círculo que establece el radio, y debería emitir el radio, la circunferencia y el área, sin embargo, si ingreso el radio, el radio, la circunferencia, el área no se devolverán, solo se muestra como 0.0 heres my Circle.java
public class Circle
{
private double radius;
private double PI = 3.14159;
public void setRadius(double rad)
{
radius = rad;
}
public double getRadius()
{
return radius;
}
public double getArea()
{
return PI * radius * radius;
}
public double getDiameter()
{
return 2 * radius;
}
public double getCircumference()
{
return 2 * PI * radius;
}
}
y heres circledemo.java http://pastie.org/466414 -El formateo no salió bien aquí
Primero ingreso el radio, pero cuando llamo getRadius, circunferencia, área, solo genera 0.0
Solución
Pasemos por la ejecución del programa, paso a paso. Primero, inicializa algunas variables y luego crea un objeto Scanner. Luego, ingresa un bucle while
. Dentro de ese ciclo while, muestra el menú principal, lee la entrada del teclado, crea un nuevo objeto Circle y luego maneja la entrada que recibió. Y sigue haciendo eso hasta que flag
esté configurado en false
, en cuyo caso el programa se cerrará.
¿Notas algo extraño aquí?
Sólo existe una variable dentro del ámbito en el que se declaró, y su objeto Circle se declaró dentro del bucle while. Recuerde, el cuerpo de un ciclo while representa una iteración de un ciclo while . Entonces, esencialmente, su objeto Circle se está recreando una y otra vez, por lo que setRadius ()
no está teniendo efecto.
Otros consejos
Cree la instancia del objeto Circle (es decir, el código Circle one = new Circle ()) FUERA del ciclo while. Cada iteración del bucle hace que el objeto se vuelva a crear con un nuevo estado (es decir, un nuevo radio).