Newsgroup: it.comp.java
Titolo: cosa c'è che non va?

sto facendo un piccolo programmino sugli array, precisamente per 
leggere da tastiera un array di elementi interi , sto quindi
implementando una classe che chiamo GestioneArray , che contiene il
metodo leggeArray ...ho pensato di fare come segue :
class GestioneArray {
int[] a ;
a = new int[10] ;
public static void leggeArray (int[] a) {
int i;
ReadStream in ;
in = new ReadStream () ;
for (i=0 ;i<a.lenght;i++) {
System.out.println ("l'elemento di indice ì" +i +" :" ) ;
a[i] = in.readInt () ;
}
}
}
in fase di compilazione ho il seguente errore :
C:\Documenti\GestioneArray.java:5: <identifier> expected
a = new int[10] ;
  ^
1 error
Procedura completata con codice di uscita 1
Sinceramente non riesco a capire dove sto sbagliando .
Ho fatto bene a dichiarare l'array di interi fuori dal metodo...ed
ancora ad istanziarlo fuori dallo stesso?
Ho pensato di si , in quanto poi deve essere argomento del metodo
"leggeArray" , quindi questo avrebbe dovuto manipolare un oggetto (
perchè l'array si può ritenere un oggetto , giusto?) che già esistesse
perchè già creato !
La variabile indice i l'ho dichiarata dentro il metodo ....ho
sbagliato?
deve utilizzaral il costrutto for....quindi credo vada bene ...
aiuto !
cia grazie e scusate la banalità di quanto chiedo...
ma sono davvero alle prime armi !

 
L'errore è proprio qui: questo è un pezzo di codice che andrebbe dentro 
un metodo o in un blocco static (lasciamo perdere).
Se sei sicuro che 10 va sempre bene allora fai così:
int[] a = new int[10];
infatti se vuoi inizializzare una variabile fuori da un blocco di codice 
devi farlo contestualmente alla dichiarazione.
-- 
  -- + Setaceous Pig + --
http://megadix.users.mcs2.netarray.com/
http://www.jroller.com/page/megadix/

 ha scritto nel messaggio
news:6kqji0tum6u6dmm18...@4ax.com...
[CUT CUT]
questo è il tuo codice, lo riscritto un po piu leggibile ;):
class GestioneArray {
int[] a ;
a = new int[10] ;
    public static void leggeArray (int[] a) {
        int i;
        ReadStream in ;
        in = new ReadStream () ;
        for (i=0 ;i<a.lenght;i++) {
            System.out.println ("l'elemento di indice ì" +i +" :" ) ;
            a[i] = in.readInt () ;
        }
    }
}
I ragionamenti che hai fatto su come passare l'array e sul uso del indice è
ok.
Il problema che hai è che nn puoi istanziare l'oggetto array di interi nelle
dichiarazioni della classe.
Due modi:
1)
int[] a ;
a = new int[10] ;
diventa
static {
    int[] a ;
    a = new int[10] ;
}
2) questa classe la dovra usare qualcuno vero? quindi
class GestioneArray {
    public static void leggeArray (int[] a) {
        int i;
        ReadStream in ;
        in = new ReadStream () ;
        for (i=0 ;i<a.lenght;i++) {
            System.out.println ("l'elemento di indice ì" +i +" :" ) ;
            a[i] = in.readInt () ;
        }
    }
}
chi userà questa classe (o un metodo di un altra classe o un main)
istanzierà lui l'array e lo passerà al metodo statico in questo modo
// corpo del main
int[] test = new test[10];
GestioneArray.leggeArray(test);
// ora l'array test è valorizzato con i dati inseriti, in java il passaggio
di parametri oggetti avviene per riferimento!!!!!!!
-- 
Ciao e buon lavoro,
  Renato
---- 
Renato Eschini
   Inera srl
   Via Vespucci 41
   56100 Pisa
   Tel:         (+39) (0)50 2201218
   WWW:         
http://www.inera.it

 news:6kqji0tum6u6dmm18...@4ax.com...
[CUT CUT]
scusa nn ho considerato una terza soluzione
3)
int a = new a[10];
l'inizializzazione delle varibili nel corpo dichiarazione di una classe o la
fai statica o contestuale.
Cmq ti suggerisco il metodo 2) del mio precedente post, rendi molto piu'
flessibile la classe e il metodo che hai scritto.


devi farlo contestualmente alla dichiarazione.
??
cmq  ho provato a fare come dici te ....il listato mi diviene dunque
il seguente :
class GestioneArray {
int[] a = new int[10] ;
public static void leggeArray (int[] a) {
int i;
ReadStream in ;
in = new ReadStream () ;
for (i=0 ;i<a.lenght;i++) {
System.out.println ("l'elemento di indice ě" +i +" :" ) ;
a[i] = in.readInt () ;
}
}
}
che una volta compilato mi tira fuori i seguenti casini :
C:\Documenti\GestioneArray.java:9: cannot resolve symbol
symbol  : class ReadStream 
location: class GestioneArray
ReadStream in ;
^
C:\Documenti\GestioneArray.java:11: cannot resolve symbol
symbol  : class ReadStream 
location: class GestioneArray
in = new ReadStream () ;
         ^
C:\Documenti\GestioneArray.java:13: cannot resolve symbol
symbol  : variable lenght 
location: class int[]
for (i=0 ;i<a.lenght;i++) {
             ^
3 errors
Procedura completata con codice di uscita 1
Sto buttando giů troppa roba troppo in fretta ....probabimente 
del tuo suggerimento ho compreso ben poco ....
purtroppo ho pochissimo tempo per tentare l'esame...
e di programmazione come avrai ben capito prima di questi 10 giorni
non ne ho mai sentito parlare...per cui ti prego di scusare la mia
ignoranza ...
nel frattempo ti ringrazio !

di parametri oggetti avviene per riferimento!!!!!!!
quindi ...se facessi come di seguito :
class TestGestioneArray {
public static void main (String[]args) {
int[] a ;
a=new int[10] ;
GestioneArray.leggeArray (a) ;
}
}
pensi che posso giungere a qualcosa ?
P.S.
tutti dicono che java è semplicissimo....
personalmente se mi dicessero di rifare scienza delle costruzioni al
posto di questo esame firmerei ad occhi chiusi .....
probabilmente ancora non ho capito un cavolo ...ma con le tue dritte
sento che qualcosa mi si è aperto davvero ...grazie di cuore...

              ^
occhio alla lettera h
a.length
Ciao
Sandro..
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Sinceramente la classe ReadStream io non la conosco!
ho installato l' j2sdk1.4.2_04 che credo sia l'ultiam release Sun del
JDK ....o mi sbaglio?
La classe readstream....
credo di aver svelato l'arcano, un mio amico di università , mi ha
detto che la classe readstream è l'unica mancante nel pacchetto ...e
che devo scaricarla e metterla nella cartella dove salvo il file.java
cosa che mi sto accingendo a fare...ti farò sapere...
intanto mille grazie !!
raffaele

 wrote:
[CRACK CRACK]
Solitamente i metodi statici come l'hai usato tu, si usano nelle classi di
utilità, questo è un modo corretto per chiamare metodi di utilià generale,
di solito si mette anche a private il costruttore di default. Ripeto:è un
modo corretto per le classi di utilità ma attento che è un pessimo modo di
programmare ad ogetti!
cmq
crea in una dir TestGesioneArray un file GestioneArray.java con al interno
/**@todo mettere import a ReadStream*/
class GestioneArray {
    public static void leggeArray (int[] a) {
        int i;
        ReadStream in ;
        in = new ReadStream () ;
        for (i=0 ;i<a.lenght;i++) {
            System.out.println ("l'elemento di indice ì" +i +" :" ) ;
            a[i] = in.readInt () ;
        }
    }
}
devi importare la classe ReadStream, nn è una classe del jdk, deve essere
qualcosa usato a scopo didattico......(l'errore di cui parli nel altro post)
nella solita dir crea un file TestGestioneArray.java
class TestGestioneArray {
    public static void main (String[]args) {
       int[] a=new int[10] ;
       GestioneArray.leggeArray (a) ;
    }
}
da shell al interno della suddetta directory javac TestGestioneArray.java
e poi java TestGestioneArray


}
quando la compilo in effetti mi va tutto a buon fine...
ma quando la eseguo, mi si apre la finestra di dialogo...
ora il programma credo sai costruito per leggere da tastiera un array
di elementi interi.....cosa devo immettere ?
P.S.
sono in confusione piena....meno di due ore fa ...ma sempre in
confusione...
grazie di nuovo !

 di elementi interi.....cosa devo immettere ?
interi??????????????


interi??????????????
eheheh....effettivamente 
se lancio il programma da TextPad mi si impalla ...
eppure con tutti i programmini prova che troavavo
preconfezionati mi ha sempre funzionato !
Non so come ringraziarti per avermi preso per mano in questo
pomeriggio d'agosto :))
Caffè ( anche Java ..se si trova in italy) pagato quando vuoi :))

 Caffè ( anche Java ..se si trova in italy) pagato quando vuoi :))
Ormai a forza di caffè ho la takitakitakitaki...ehm...takicardia :D
Venerdi vado in ferie :D, cmq tutti attenti che vi continuo a leggere e
seguire!!!!!!!


seguire!!!!!!!
cavolo ...lunedě prossimo ho l'esame....
spero che se anche in ferie possa approfittare cmq di qualche tuo
consiglio :)