Раздвижное окно: как правильно заполнить окно?(JAVA / ArrayList + Массив) - PullRequest
0 голосов
/ 19 мая 2019

Небольшая часть моей домашней работы требует реализации раздвижного окна.Другими словами, если у меня есть массив сообщений [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 и т. Д.], Я должен заполнить массив окон в зависимости от размера.В приведенном ниже коде размер окна упоминается как Max_Size.Таким образом, предполагая, что мой Max_Size равен 2, окно должно быть заполнено [1, 2], затем [3, 4], затем [5, 6] и так далее.Код не повторяется правильно (поэтому, если я использую команду дважды, я получаю одинаковое содержимое), и информация не передается правильно между двумя массивами.Я давно ничего не кодировал, поэтому любая помощь приветствуется.

    `void fillWindow() {
    ArrayList <Integer> temp = new ArrayList <> (data.size());
    temp.addAll(data);
    switch (Max_Size) {
        case (1) :
            for (int i = 0; i <= Max_Size; i++) {
                Window.add(i, temp.get(i));
                temp.remove(i);
                next_S++;
            }
            break;
        case (7) :
            for (int i = 0; i <= Max_Size; i++) {
                Window.add(i, temp.get(i));
                next_S++;
                if (Window.size() == Max_Size) {
                    for (int j = 0; j < 7; j++) {
                        temp.remove(j);
                    }
                }
            }
            break;
        case (127) :
            for (int i = 0; i <= Max_Size; i++) {
                Window.add(i, temp.get(i));
                next_S++;
                if (Window.size() == Max_Size) {
                    for (int j = 0; j < Max_Size; j++) {
                        temp.remove(j);
                    }
                }
            }
            break;
    }
    System.out.println("Window Content = " + Window);
    Window.clear();
}`

Моя проблема заключается в следующем: во-первых, я не могу заставить его повторяться правильно;другими словами, он продолжает печатать одно и то же содержимое каждый раз.Моя вторая проблема заключается в том, что информация из сообщения неправильно передается в массив окна.Таким образом, используя приведенный выше пример, если Max_Size = 7, вместо распечатки [1, 2, 3, 4, 5, 6, 7] выведите что-то вроде [1, 2, 3, 4, 5, 8, 9].Поэтому я думаю, что мой вопрос заключается в следующем: что я сделал не так и как я могу это исправить?

ОБНОВЛЕНИЕ

    void fillWindow() {
    ArrayList <Integer> temp = new ArrayList <> (data.size());
    temp.addAll(data);
    int count = 0;
    while (count < Max_Size) {
        Window.add(count, temp.get(count));
        count++;
    }
    for (int i = 0; i < count; i++) {
        temp.remove(i);
    }
    System.out.println("Window = " + Window);
    Window.clear();
}

После прочтения комментария @ Андреаса,это то, что я придумал.Код теперь повторяется правильно, но когда я использую fillWindow () дважды при одном запуске, он все равно продолжает показывать один и тот же контент.Например, когда я делаю следующее:

public static void main(String args[]) 
{ 
        fillWindow();
        fillWindow();

} 

и ожидаемый ответ - [1, 2, 3], затем [4, 5, 6], но вместо этого я получаю [1, 2, 3] и [1, 2, 3].Это нормально?

...