Frage

also machte ich eine Kreis-Klasse, die definiert den radius, und sollte die Ausgabe der radius, Umfang und Fläche jedoch, wenn ich die Eingabe des radius, radius, Umfang, Fläche Gewohnheit Produktion zurück, es zeigt nur, wie 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;
    }

}

und heres circledemo.java http://pastie.org/466414 -Formatierung nicht gut aus hier

Zuerst habe ich die Eingabe des radius ist, aber wenn ich Anrufe, getRadius, Umfang, Fläche, es ist nur Ausgänge 0.0

War es hilfreich?

Lösung

Lassen Sie uns gehen Sie durch die Ausführung des Programms, Schritt für Schritt.Zuerst initialisieren Sie einige Variablen und erstellen Sie anschließend ein Scanner-Objekt.Nächsten, geben Sie ein while Schleife.Innen, die while-Schleife zeigen Sie das Hauptmenü, Lesen Eingaben von der Tastatur, erstellen Sie eine neue Kreis-Objekt, und dann mit der input, den Sie erhalten.Und Sie machen weiter bis flag eingestellt ist false, in diesem Fall wird das Programm beendet.

Bemerken Sie etwas seltsames hier?

Eine variable existiert nur innerhalb des Bereichs es wurde erklärt, in, und Ihr Kreis-Objekt deklariert wurde innen die while-Schleife.Denken Sie daran, der Körper der while-Schleife stellt eine iteration von einer while-Schleife.So, im wesentlichen, Ihre Kreis-Objekt wird immer neu erstellt und immer wieder, das ist der Grund, warum setRadius() keine Wirkung.

Andere Tipps

Erstellen Sie den Kreis Objektinstanz (das heißt der Code-Kreis ein = new Kreis ()), die außerhalb der while-Schleife. Jede Iteration der Schleife das Objekt verursacht mit neuem Zustand (das heißt neuen Radius) neu erstellt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top