Заполнение многомерного массива из текстового файла - PullRequest
2 голосов
/ 23 мая 2011

У меня есть текстовый файл, содержащий информацию о пользователях, в виде строк, разделенных запятыми. Я использовал комбинацию экспериментов и исследований, чтобы попытаться разделить каждую строку на отдельные фрагменты информации (используя функцию разделения), которые можно сохранить в массиве, а затем выполнить поиск по ним. С кодом, который у меня есть, каждое имя и имя пользователя в текстовом файле повторяется 4 раза, как я не понимаю. Все, что мне удалось сделать, это еще больше запутать себя, но все, что мне нужно, - это извлечь каждую строку из текстового файла, разделить ее на 4 отдельных фрагмента информации и сохранить их в памяти для поиска. У меня есть код:

package assignment;


import java.io.*;

public class readUser {
public void read()
{
    try{

        FileInputStream propertyFile = new FileInputStream("AddUser.txt");

        DataInputStream input = new DataInputStream(propertyFile);
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));

        String line;

        while ((line = reader.readLine()) != null) {

            String[] items = line.split(",");
            String[][] usersArray = new String [5][2];
            int i;
            for (String item : items) {

                for (i = 0; i<items.length; i++){
                    if (i == 0) {
                        System.out.println("Name: " + items[i]);
                    } else if (i == 1) {
                        System.out.println("Username: " + items[i]);


                }
            }
            }
            //System.out.println(line);



        }
        input.close();
    }
    catch (Exception e){

        System.err.println("Error: " + e.getMessage());
    }
        }

}

Спасибо за любые советы по этому вопросу

1 Ответ

5 голосов
/ 23 мая 2011

Взгляните на разбивку вашего кода, и проблема станет ясна:

for each line in property file (while loop):
    for each item in line:
        for each item in line:
           if item 0 print username
           else if item 1 print username
           endif
        end loop
     end loop
end loop

Ваш код в основном повторяется по списку items дважды. Имейте в виду, что в Java следующие два фрагмента кода эквивалентны - они оба перебирают значения массива или коллекции.

A

for (String item : items) {...}

B

for (int i = 0; i < items.length; i++) {
    String item = items[i];
    ....
}
...