Le funzioni Circle non si comportano come previsto nella classe Java
Domanda
quindi ho creato una classe circolare che imposta il raggio e dovrei generare il raggio, la circonferenza e l'area, tuttavia, se inserisco il raggio, il raggio, la circonferenza, l'area non verranno restituiti, viene visualizzato solo come 0,0 ecco il mio 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;
}
}
ed heres circledemo.java http://pastie.org/466414 la formattazione non è venuta bene qui
Per prima cosa inserisco il raggio, ma quando chiamo getRadius, circonferenza, area, genera solo 0,0
Soluzione
Esaminiamo l'esecuzione del programma, passo dopo passo. Innanzitutto, inizializzare alcune variabili e quindi creare un oggetto Scanner. Successivamente, inserisci un ciclo while
. All'interno di quel ciclo while, visualizzi il menu principale, leggi l'input dalla tastiera, crea un nuovo oggetto Circle , quindi gestisci l'input che hai ricevuto. E continui a farlo fino a quando flag
è impostato su false
, nel qual caso il programma termina.
Noti qualcosa di strano qui?
Una variabile esiste solo all'interno dell'ambito in cui è stata dichiarata e l'oggetto Circle è stato dichiarato dentro nel ciclo while. Ricorda, il corpo di un ciclo while rappresenta una iterazione di un ciclo while . Quindi, in sostanza, l'oggetto Circle viene ricreato più e più volte, motivo per cui setRadius ()
non ha alcun effetto.
Altri suggerimenti
Crea l'istanza dell'oggetto Circle (ovvero il codice Circle one = new Circle ()) ESTERNO del ciclo while. Ogni iterazione del ciclo fa sì che l'oggetto venga ricreato con un nuovo stato (cioè nuovo raggio).