 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
marinheiro Guest
|
Posted: Wed Sep 21, 2005 11:07 am Post subject: Array di classi... |
|
|
Oi!
Premetto che sono un neofita di java.
Detto ciò, tra le tante cose che non so, c'è qualcosa che non mi è
chiaro negli array di classi in java, o forse sulle classi
innestate... .
o meglio, a me sembra essere tutto chiaro, ma niente funzionante :)
infatti, ho la mia classe principale:
public class newworld {
public static void main (String args[]){
World mondo = new World(4);
| Quote: | mondo.zones[0].nord = 1;
System.out.println(mondo.zones[0].nord);
} |
}
che al momento di compilazione mi dà
cannot find symbol alla riga >>> riguardo la variabile zone.
la classe world ha questa definizione:
class World {
int numzones;
World(int numreq) {
numzones = numreq;
public zona zones[]=new zona[numreq];
}
}
mentre la classe zona ha quattro int (nord sud ovest est)
inizializzati a 0.
qual è il problema di settare classi all'interno di altre classi?
Scusatemi se è una domanda banale ma non ho trovato risposta altrove,
grazie mille in anticipo,
Axé!
|
|
| Back to top |
|
 |
riccardo_at@email.it Guest
|
Posted: Wed Sep 21, 2005 11:41 am Post subject: Re: Array di classi... |
|
|
Il problema e' che tu non stai usando una inner class ("classe
innestata")
Con inner class si intende una classe che viene DEFINITA dentro un'
altra
classe, non una classe che viene usata all'interno del costruttore di
un 'altra classe,
come nel tuo caso.
Guarda bene cosa hai scritto:
class World {
int numzones;
World(int numreq) {
numzones = numreq;
public zona zones[]=new zona[numreq]; <<<<-----ORRORE
}
}
tu stai cercando di creare una variabile pubblica di classe all interno
del costruttore!
Le variabili di classe vanno dichiarate FUORI dal costruttore (come hai
fatto per numzones). Infatti non capisco come il tuo codice possa
compilare.. e' illegale
dare un modificatore di accesso come public a una variabile locale
definita nel costruttore o in una funzione. Ma anche togliendo public,
tu hai definito un bellissimo array di zones che esiste SOLO durante l
esecuzione del costruttore e poi.. puff!
E non e' certo una variabile di classe.. ecco perche java si incazza
quando cerchi di
raggiungere modo.zones
Credo che tu abbia le idee ancora un p' troppo vaghe per buttarti a
creare un mud
(e quello che stai cercando di fare , vero?) Ti consiglio di dare una
bella letta a un testo
Java prima di tentare il "fai da te" Scegli un libro di Hosrtmann o
di Horton, o "thinking in java" di Eckel (che ti puoi scaricare dalla
rete aggrattis!)
in bocca al lupo!
|
|
| Back to top |
|
 |
Alex Guest
|
Posted: Wed Sep 21, 2005 11:43 am Post subject: Re: Array di classi... |
|
|
"zona" è una classe, così "zones" è un array d'oggetti
quindi per ogni elemento dell'array devi chiamare il costruttore della
classe...
e comunque non capisco bene il codice tagliato, l'oggetto zona è
dichiarato all'interno del costruttore? In questo modo non ha
visibilità all'esterno, dovresti metterlo dove dichiari numzones
(ovvero negli attributi della classe)
Infine guarda l'incapsulamento perchè questo modo di accedere agli
attributi di una classe è sconsigliato!!
Ciaoo
|
|
| Back to top |
|
 |
marinheiro Guest
|
Posted: Wed Sep 21, 2005 1:25 pm Post subject: Re: Array di classi... |
|
|
On 21 Sep 2005 04:41:34 -0700, [email]riccardo_at (AT) email (DOT) it[/email] wrote:
| Quote: | tu stai cercando di creare una variabile pubblica di classe all interno
del costruttore!
Le variabili di classe vanno dichiarate FUORI dal costruttore (come hai
fatto per numzones). Infatti non capisco come il tuo codice possa
compilare..
|
ah beh
Grazie in primis della risposta mi rendo conto che è difficile
rispondere a qualcuno con così poca coscienza della cosa :D
| Quote: | e' illegale
dare un modificatore di accesso come public a una variabile locale
definita nel costruttore o in una funzione. Ma anche togliendo public,
tu hai definito un bellissimo array di zones che esiste SOLO durante l
esecuzione del costruttore e poi.. puff!
E non e' certo una variabile di classe.. ecco perche java si incazza
quando cerchi di
raggiungere modo.zones
|
si, giusto.
Quindi in teoria dovrei definire la classe zona nella classe world.
Ok.
Però a me serve un array di zona.
Come faccio a crearlo? Voglio dire, come avevo fatto prima alla
creazione di 'mondo' passavo a mondo un parametro che definisce il
numero di zone in base al quale questo creava l'array di zone.
Adesso come faccio? Passo a mondo un parametro che a sua volta sarà
passato a zones?
| Quote: | Credo che tu abbia le idee ancora un p' troppo vaghe per buttarti a
creare un mud (e quello che stai cercando di fare , vero?)
|
No, a dire il vero no, è che solo stavo facendo un pò di esercizi
varii e mi era venuta in mente 'sta cosa. Penso che potrei fare
ugualmente togliendo proprio la classe mondo, ma così sarebbe troppo
semplice :D
Ti consiglio di dare una
| Quote: | bella letta a un testo
Java prima di tentare il "fai da te" Scegli un libro di Hosrtmann o
di Horton, o "thinking in java" di Eckel (che ti puoi scaricare dalla
rete aggrattis!)
in bocca al lupo!
|
Grazie. Ho già preso qualche testo, li sto studiando, lo so che
procedere a tentoni è impossibile :)
Axé!
|
|
| Back to top |
|
 |
pioneer@inwind.it Guest
|
Posted: Wed Sep 21, 2005 3:03 pm Post subject: Re: Array di classi... |
|
|
Basta fare così.
class World {
int numzones;
public zona zones[];
World(int numreq) {
numzones = numreq;
zones[]=new zona[numreq];
}
}
|
|
| Back to top |
|
 |
riccardo_at@email.it Guest
|
Posted: Fri Sep 23, 2005 12:30 pm Post subject: Re: Array di classi... |
|
|
class World {
int numzones;
public zona zones[];
World(int numreq) {
numzones = numreq;
zones[]=new zona[numreq]; // questi sono solo puntatori i a null al
momento
}
}
Gisto, okkio Axe' pero' al fatto che con zoes[] = new zona[numreq] non
hai un array di
zone, ma un array di puntatori a zone che al mmento della craezione non
puntano a un fico secco (cioe' null) .
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|