Заполнение многомерного массива из текстового файла

У меня есть текстовый файл, содержащий информацию о пользователях, в виде строк, разделенных запятыми. Я использовал комбинацию экспериментов и исследований, чтобы попытаться разделить каждую строку на отдельные фрагменты информации (с помощью функции разделения), которые можно сохранить в массиве, а затем выполнить поиск. С кодом у меня каждое имя и имя пользователя в текстовом файле повторяется по 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());
    }
        }

}

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


person Chris Brown    schedule 23.05.2011    source источник


Ответы (1)


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

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 следующие два фрагмента кода эквивалентны — в том смысле, что они оба перебирают значения массива или коллекции.

А

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

Б

for (int i = 0; i < items.length; i++) {
    String item = items[i];
    ....
}
person Kris Babic    schedule 23.05.2011
comment
+1 за псевдокод, а не за написание кода для плаката. - person camickr; 23.05.2011
comment
for (i = 0; i‹items.length; i++){ } не требуется. - person Bhushan; 23.05.2011