Добавление элементов в массив - PullRequest
0 голосов
/ 24 июня 2019

Я вставил 25 элементов в массив с именем "l". Далее я добавляю первые пять элементов и сохраняю сумму в первую позицию массива (a [0]). Затем снова добавляю следующие пять элементов и сохраняю сумму ввторая позиция массива (a [1]). Аналогично, он продолжается. Затем, по крайней мере, я печатаю массив «a». Я пытался использовать цикл для этого.

for (int i = 0; i<5; i++) {
            total = total + l.get(i);
        }
        System.out.println("1 " + total);
        a[0] = total;
        total = 0;
        for (int i = 5; i<10; i++) {
            total = total + l.get(i);
        }
        System.out.println("2 " + total);
        a[1] = total;
        total = 0;
        for (int i = 10; i<15; i++) {
            total = total + l.get(i);
        }
        System.out.println("3 " + total);
        a[2] = total;
        total = 0;
        for (int i = 15; i<20; i++) {
            total = total + l.get(i);
        }
        System.out.println("4 " + total);
        a[3] = total;
        total = 0;
        for (int i = 20; i<25; i++) {
            total = total + l.get(i);
        }
        System.out.println("5 " + total);
        a[4] = total;
    }
    for(int i=0;i<a.length;i++)
    {
        System.out.println(a[i]);
    }

, например: если массив содержит элементы( "1,1,0,8,4,6,6,1,0,1,4,1,1,1,6,6,4,1,0,8,8,3,8,1,0 "), затем выводится как" 14 14 13 19 20 ", и этот код печатается правильно. Я использовал 5 для циклов, чтобы сделать это, Есть ли другой простой способ сделать это? Если есть, то скажите мне, что логикая могу использовать?

1 Ответ

1 голос
/ 24 июня 2019

Существует основная проблема с вашим кодом, вы можете обрабатывать только массивы размером 25 (максимум). Вы должны использовать циклы, чтобы получить желаемое поведение. (Использование циклов также позволяет не использовать код снова и снова)

Как начать использовать петли?

Посмотрите на ваш код, что, кажется, повторяется снова и снова?

Вроде как раздел:

for (int i = 0; i<5; i++) {
    total = total + l.get(i);
}
System.out.println("1 " + total);
a[0] = total;
total = 0;

повторяется 5 раз! Вы всегда должны стремиться написать минимум количество кода

Вы можете обобщить ваше решение следующим образом:

for (int chunk = 0; chunk < 5; chunk ++) {
    for (int i = 0; i < 5; i++) {
        total = total + l.get(i + chunk * 5);
    }
    System.out.println(chunk + " " + total);
    a[chunk] = total;
    total = 0;
}

Но это все еще очень ограничено, я хочу обрабатывать списки массивов размером> 25!

Вместо использования array для результатов, вы можете использовать другой array list

Вот так:

List<Integer> results = new ArrayList<Integer>();

for (int i = 0; i < l.size(); i++) {
    int chunk = i / 5;

    if (chunk >= results.size()) 
        results.add(l.get(i));
    else
        results.set(chunk, l.get(i) + results.get(chunk));
}
for (int i = 0; i < results.size(); i++) {
    System.out.println(i + " " + results.get(i));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...