2010-09-20 14 views
5

Necesito ayuda. Para este método específico. Intento que devuelva un arraylist que he tokenizado.Cómo devolver una lista de arrays desde un método

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; 
} 

¿Qué estoy haciendo mal ?!

+1

Así como un comentario, se considera una buena práctica en general para devolver una lista en lugar de un ArrayList, en caso de que tenga que cambiar la aplicación en algún momento. – DJClayworth

Respuesta

10

Al final está haciendo return tokens pero esa variable se definió DENTRO del bloque try, por lo que no es accesible fuera de él. Usted debe agregar:

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

a la parte superior de su método, justo debajo de la BufferedReader.

+0

Excepción en el hilo "principal" java.lang.NoSuchMethodError: main Presione cualquier tecla para continuar. . . – Luron

+0

@Luron: ese es un problema completamente diferente, eso significa que no especificó un método 'public static void main (String [] args)' dentro de su clase. Esto es requerido por la JVM –

0

Intente devolver ArrayList, que es el tipo de devolución más apropiado en este caso. Los tipos genéricos no están relacionados entre sí de la misma manera que su ejemplo parece estar usándolos.

0

Probablemente sea un error en su método principal en alguna parte. ¿Estás instanciando la clase y llamando al método read() en ella?

0

Prueba esto:

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; 

    }} 
Cuestiones relacionadas