Newsgroup: it.comp.java
Titolo: ambito variabili

Ciao a tutti. Sto cercando di creare un metodo che restituisca un array di
stringhe:
public String[] getStream() throws Exception {
  BufferedReader br = new BufferedReader(new
InputStreamReader(urlc.getInputStream()));
  String s[]; // inizializzo!?
  for(int i; br.readLine() != null; i++) {
   s[i] = new String(br.readLine());   // qui genera errore
  }
  return s; // qui genera errore
 }
e mi becco sempre  2 errori di variabili non inizializzate quando uso s[].
Credo sia una questione di ambito visto che s[] viene inizializzato. Mi
sapete spiegare dove sbaglio? Grazie.

 ha scritto nel messaggio
news:9mvjvo$172s$1...@stargate1.inet.it...

Credo che dovresti inizializzare s con qualcosa tipo String s[]=new
String[10];
prova!

 wrote in message
news:9mvmfq$l5v$1...@nreadb.inwind.it...


 Non posso farlo poichè non so a priori quanto sarà grande l'array
Allora potresti mettere le tue String in un java.util.ArrayList con il suo
metodo add() ed alla fine ricavarne la grandeza con size() e passare le
String al tuo array String[] con un ciclo for.
Ciao,
Maurizio.

 Non posso farlo...
Scritto di getto, speriamo che funzioni...
[SOURCE]
  public String[] getStream() throws Exception {
    String tmpStr="";
    BufferedReader br = new BufferedReader(new
                InputStreamReader(urlc.getInputStream()));
    java.util.ArrayList myArray=new java.util.ArrayLIst();
    while((tmpStr=br.readLine()) != null) {
      myArray.add(tmpStr);
    }
    int size=myArray.size();
    String[] retVal=new String[size];
    for(int i=0;i<size;i++){
      retVal[i]=(String)myArray.get(i);
    }
    return retVal;
  }
[/SOURCE]
Fammi sapere,
Maurizio.

Perchè non usi Vector?
public Vector getStream() throws Exception
{
  BufferedReader br = new BufferedReader(new
InputStreamReader(urlc.getInputStream()));
  Vector s = new Vector();
  for(int i; br.readLine() != null; i++) {
    s.add(new String(br.readLine()));   }
   return s;
  }
I dati dal vettore li puoi prendere con un iteratore.
Ciao, Luigi.

Credo sia una questione di ambito visto che s[] viene inizializzato.
                                                 ^^^^^^^^^^^^^^^^^^^
No.
HTH
-- 
Ciao
	Fabrizio C.



Perché non usare toArray()?
-- 
Ciao
	Fabrizio C.

I dati dal vettore li puoi prendere con un iteratore.
-- 
Ciao
	Fabrizio C.

 sapete spiegare dove sbaglio? Grazie.
Ciao!
--
When God gives you lemons, make lemonade!!

 Problemi in vista! Prova e vedrai che non ottieni il risultato voluto.
Non mi sono messo a correggere l'algoritmo, ma il solo uso della struttura
dati... :-)
Il topic alla fine serve per ribadire che l'operatore [] definisce una
struttura dati di cui si deve sapere la dimensione prima dell'utilizzo (in
quanto va inizializzata col numero di elementi), negli altri casi si devono
usare oggetti dinamici come Vector, HashMap ...
Ciao, Luigi.

 Fabrizio C.

no toArray() non va bene perchè ti restituisce un Object[] non un String[]
In effetti la sintassi corretta è
String[] a = (String[]) c.toArray(new String[0]);
(cut&paste da
http://java.sun.com/docs/books/tutorial/collections/interfaces/collection.html
ultima riga)
-- 
Ciao
	Fabrizio C.

 wrote in message
news:mVJk7.19939$MO.7...@news.infostrada.it...
