Question

donc j’ai créé une classe de cercle qui définit le rayon, et doit indiquer le rayon, la circonférence et la surface. Cependant, si j’ai saisi le rayon, le rayon, la circonférence, la zone ne sera pas restituée, elle n’affiche que 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;
    }

}

et heres circledemo.java http://pastie.org/466414 -formatage n'est pas bien sorti ici

D'abord, j'entre le rayon, mais quand j'appelle getRadius, circonférence, surface, il ne sort que 0.0

Était-ce utile?

La solution

Passons en revue l'exécution du programme, étape par étape. Commencez par initialiser certaines variables, puis créez un objet Scanner. Ensuite, vous entrez une boucle while . Dans cette boucle While, vous affichez le menu principal, lisez les entrées au clavier, créez un nouvel objet Cercle , puis gérez les informations que vous avez reçues. Et vous continuez à le faire jusqu'à ce que flag soit défini sur false , auquel cas le programme se ferme.

Avez-vous remarqué quelque chose d'étrange ici?

Une variable n'existe que dans l'étendue dans laquelle elle a été déclarée et votre objet Circle a été déclaré à l'intérieur de la boucle while. N'oubliez pas que le corps d'une boucle while représente une itération d'une boucle while . Donc, essentiellement, votre objet Cercle est recréé maintes et maintes fois, c'est pourquoi setRadius () n'a aucun effet.

Autres conseils

Créez l’instance d’objet Cercle (c.-à-d. le code Cercle un = nouveau Cercle ()) à l’extérieur de la boucle while. Chaque itération de la boucle entraîne la recréation de l'objet avec un nouvel état (c'est-à-dire un nouveau rayon).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top