Найдите в 2D-массиве строку другого 1D-массива, а затем поместите их в новый 2D-файл с сортировкой 1-мерного массива. - PullRequest
0 голосов
/ 11 апреля 2019

Этот заголовок должен вводить в заблуждение, поэтому позвольте мне объяснить мою проблему.

У меня есть одномерный массив (назовем его "ids"), который отсортирован так, как мне нужно.

Затем у меня есть еще один 2D-массив, который содержит имя в позиции 0 и идентификатор в позиции 1 (назовем его «имена»).

Итак, имена [0] [0] = имя, имена [0] [1] = идентификатор.

Позвольте мне уточнить, что 2 массива не имеют одинаковую длину!

Что я хочу сделать, так это создать новый 2D-массив, который имеет имя и идентификатор, но отсортирован как мой одномерный массив (идентификаторы в том же порядке, как и там).

То, что я до сих пор пробовал, это (и все, что я получаю, это текстовый файл, полный нулей):

for (int i = 0; i < ids.length; i++){
            String equal = ids[i];

            for (int j = 0; i < users.length; i++) {
                if(users[j][1].equals(equal)) {
                    sortedArray[i][0] = users[j][0];
                    sortedArray[i][1] = equal;
                }
            }

        }

        for (int i=0; i<sortedArray.length; i++){
            writer.println(sortedArray[i][0]+"\t"+sortedArray[i][1]);
        }

Это может быть бесполезно, но так как я создаю этичитая файлы, это остальная часть моего кода:

BufferedReader reader;
        BufferedReader reader2;
        PrintWriter writer;

        String[][] users = new String[39431][2];
        String[] ids = new String[22890];
        String[][] sortedArray = new String[22890][2];

        reader = new BufferedReader(new FileReader("allConnectedUsers.txt"));
        reader2 = new BufferedReader(new FileReader("ids.txt"));

        String sorted = "sortedNamesWithIDs.txt";
        writer = new PrintWriter(sorted, "UTF-8");

        String usersline = reader.readLine();
        String idsline = reader2.readLine();


        for (int i = 0; i < users.length; i++) {
            String splittedLine[] = usersline.split(" ");
            String name = splittedLine[0];
            String id = splittedLine[1];
            users[i][0] = name;
            users[i][1] = id;
            usersline = reader.readLine();
        }

        for (int i = 0; i < ids.length; i++) {
            String onlyIDs;
            onlyIDs = idsline;
            ids[i] = onlyIDs;
            idsline = reader2.readLine();
        }

1 Ответ

0 голосов
/ 12 апреля 2019

Я на самом деле это исправил.Это была довольно глупая ошибка.

Во вложенном цикле я не проверял «j» и не увеличивал его, но я.

Извините за эту глупую ошибку, спасибо, что вы даже прочитали ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...