Небольшая часть моей домашней работы требует реализации раздвижного окна.Другими словами, если у меня есть массив сообщений [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].Это нормально?