Чтение файла в 2d arraylist и сохранение каждого слова в строке в массиве - PullRequest
0 голосов
/ 19 декабря 2011

Что я хочу сделать, так это прочитать файл с несколькими словами в одной строке и затем добавить каждое слово в 2d arraylist.Это должно быть так, чтобы [[кевин, кевин, кевин] [рабочие места, рабочие места, рабочие места]]

приведенный ниже код работал хорошо, но ему это нравится [[кевин, кевин, кевин, рабочие места, рабочие места, рабочие места]]

Это должно быть сделано с помощью nested for, но кто-то может помочь, пожалуйста?

public void getReference() throws IOException
    {
        String line=null;

            connectRead("computer");
            //this is a method that reads a file in a format kevin kevin kevin kevin
            try
            {
                reference.add(new ArrayList<String>());
                while ((line=bufferedReader.readLine())!=null)
                {
                    st = new StringTokenizer(line); 

                    for ( int i = 0 ; i < st.countTokens() ; i++)
                    {       
                        reference.get(i).add(st.nextToken());
                        reference.get(i).add(st.nextToken());
                        reference.get(i).add(st.nextToken());
                        reference.get(i).add(st.nextToken());  
                    }

                }
                System.out.println(reference);

                bufferedReader.close();
            }
            catch ( IOException e )
            {
               System.out.println(e);
            }      

    }

текст в файле выглядит примерно так

kevin usa hacker wozniak usaхакерские работы сша хакер

1 Ответ

1 голос
/ 19 декабря 2011

Вы всегда получаете reference.get (i), где i = 0, поэтому всякий раз, когда читается новая строка, вставка токена начинается с ArrayList с нулевым индексом.

попробуйте это, но эта структура выглядит немного смущающей для меня. может показывать, что структура вашего входного файла помогает улучшить код.

public void getReference() throws IOException
{
    String line=null;

        connectRead("computer");
        //this is a method that reads a file in a format kevin kevin kevin kevin
        try
        {
            reference.add(new ArrayList<String>());
            int indexOfReferences =0 ;
            while ((line=bufferedReader.readLine())!=null)
            {
                st = new StringTokenizer(line); 

                for ( int i = 0 ; i < st.countTokens() ; i++)
                {       
                    reference.get(indexOfReferences).add(st.nextToken());
                }
               indexOfReferences++;

            }
            System.out.println(reference);

            bufferedReader.close();
        }
        catch ( IOException e )
        {
           System.out.println(e);
        }      

}
...