2010-09-20 6 views
5

Ho bisogno di aiuto. Per questo metodo specifico. Sto cercando di farlo restituire un arraylist che ho tokenizzato.Come restituire un arraylist da un metodo

public ArrayList read(){ 

    BufferedReader inputStream = null; 
    try { 
    inputStream = new BufferedReader(new FileReader("processes1.txt")); 
    String l; 
    while ((l = inputStream.readLine()) != null) { 

     ArrayList<String> tokens = new ArrayList<String>(); 

     Scanner tokenize = new Scanner(l); 
     while (tokenize.hasNext()) { 
     tokens.add(tokenize.next()); 
     } 
     return tokens; 
    } 
    } catch(IOException ioe){ 
    ArrayList<String> nothing = new ArrayList<String>(); 
    nothing.add("error1"); 
    System.out.println("error"); 
    //return nothing; 
    } 
    return tokens; 
} 

Cosa sto sbagliando ?!

+1

Proprio come un commento, si considera buona pratica in generale per restituire un elenco piuttosto che un ArrayList, nel caso in cui è necessario modificare l'implementazione ad un certo punto. – DJClayworth

risposta

10

Alla fine si sta facendo return tokens ma quella variabile è stata definita DENTRO il blocco try, quindi non è accessibile al di fuori di esso. Si dovrebbe aggiungere:

ArrayList<String> tokens = new ArrayList<String>();

alla parte superiore del vostro metodo, appena sotto il BufferedReader.

+0

Eccezione nel thread "main" java.lang.NoSuchMethodError: main Premere un tasto qualsiasi per continuare. . . – Luron

+0

@Luron - Questo è un problema completamente diverso, il che significa che non è stato specificato un metodo 'public static void main (String [] args)' all'interno della classe. Questo è richiesto dalla JVM –

0

Provare a restituire ArrayList che è il tipo di reso più appropriato in questo caso. I tipi generici non sono correlati tra loro come il tuo esempio sembra utilizzarli.

0

È probabilmente un errore nel metodo principale da qualche parte. Stai istanziando la classe e chiamando il metodo read() su di essa?

0

Prova questa:

public ArrayList read(){ 

      File text = new File("processes1.txt"); 

       ArrayList<String> tokens = new ArrayList<String>(); 

       Scanner tokenize; 
      try { 
       tokenize = new Scanner(text); 
       while (tokenize.hasNext()) { 

         tokens.add(tokenize.next()); 
        } 

       } 

      catch(IOException ioe){ 
       ArrayList<String> nothing = new ArrayList<String>(); 
       nothing.add("error1"); 
       System.out.println("error"); 
       //return nothing; 
       } 
      return tokens; 

    }}