Si stanno chiamando metodi e campi di istanza da un metodo statico, qualcosa che non può essere eseguito perché campi e metodi di istanza non esistono senza un oggetto e all'interno del metodo principale non c'è l'oggetto this
. È necessario invece creare un'istanza della classe e quindi chiamare i metodi sull'istanza.
public class Cerchio{
float r;
float area;
float cfr;
final double pi = 3.14;
public static void main(String[] args){
System.out.println("CIRCLE PROGRAM\n");
Cerchio cerchio = new Cerchio();
cerchio.r = 5;
cerchio.c_cfr();
cerchio.c_area();
System.out.ptintln("The cir is: " + cerchio.cfr);
System.out.println("The area is: " + cerchio.area);
}
float c_cfr(){
cfr =(float)(2 * pi * r); //casting
return cfr;
}
float c_area(){
area = (float)(pi * (r*r));
return area;
}
}
Un sacco di altri problemi, ...
- si sta accedendo campi di classe direttamente, cosa che non dovrebbe essere fatto. Invece, i campi dovrebbero essere privati e dovresti usare i parametri getter/setter/contructor per ottenere, impostare e impostare i campi.
- Il tuo codice non è interessato e rende molto difficile la lettura e la comprensione.
Si prega di cercare questo sito come questa stessa domanda è stata fatta e ha risposto a tempi di gabizillion, e molto probabilmente c'è una risposta là fuori che è molto meglio della mia. Se trovato, questa domanda dovrebbe essere chiusa come duplicato.
Modifica
È stato:
non ho capito "Invece, i campi dovrebbero essere privati e si dovrebbe utilizzare getter/setter/parametri contructor per ottenere, impostare e impostare i campi." Dovrei scrivere float privato c_cfr()?
I suoi campi sono:
float r;
float area;
float cfr;
Questo in realtà non è un campo, ma una costante: finale doppia pi = 3.14;
e può essere sostituito/migliorato semplicemente utilizzando Math.PI.
I suoi campi dovrebbe essere cambiata a:
private float r;
private float area;
private float cfr;
e si dovrebbe accedervi solo tramite metodi getter e setter pubblici, e solo se assolutamente necessario.
fonte
2013-10-20 20:53:46
Ok, quindi ho bisogno di creare l'oggetto nella classe in cui devo usare le proprietà e i metodi dichiarati nella classe, giusto? – Mitro
@AlessioMTX: vedi modifica per rispondere. Devi creare una variabile di tipo Cerchio all'interno del metodo principale e assegnargli un nuovo oggetto Cerchio, e quindi puoi chiamare metodi fuori da questa variabile. Questo dovrebbe essere ben spiegato nei capitoli del tuo libro di testo sulla creazione di oggetti. Per favore guarda. –
Ok grazie, è stato un errore stupido, ma ho bisogno di una spiegazione come la tua. Ho corretto il codice, quindi ora è facile da leggere, anche se non è corretto. – Mitro