Мне нужна помощь. Для этого конкретного метода. Я пытаюсь заставить его вернуть массив, который я токенизировал.
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; }
Что я делаю не так?!
В самом конце вы делаете return tokens, но эта переменная была определена ВНУТРИ блока try, поэтому она недоступна вне его Вы должны добавить:
return tokens
ArrayList<String> tokens = new ArrayList<String>();
к началу вашего метода, прямо под BufferedReader.
Попробуйте это:
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; }}
Возможно, это где-то ошибка в вашем основном методе.Вы создаете экземпляр класса и вызываете для него метод read ()?
Попробуйте вернуть ArrayList, который является более подходящим типом возврата в этом случае.Универсальные типы не связаны друг с другом так, как их использует ваш пример.