Вывод элементов массива на консоль

Дана задача. Есть массив чисел {5, 8, 1, 31, 17, 16, 2, 6, 5, 13} Мне нужно вывести на экран таким образом:

5, 13
8, 5
1, 6
31, 2
17, 16

Вывести первую строчку получилось, но как дальше хз. Алгоритм понимаю.

int [] a = {5, 8, 1, 31, 17, 16, 2, 6, 5, 13};

for (int i = 0; i <= a.length - 1; i = i + a.length - 1) {
    System.out.print(a[i] + " ");
}

Ответы (2 шт):

Автор решения: Алексей Шиманский

Цикл можно организовать до середины массива. Дальше не имеет смысла, т.к. мы выводим числа попарно начиная от конца до середины.

for (int i = 0; i < a.length / 2; ++i) {
    System.out.println(a[i] + ", " + a[a.length - 1 - i]);
}                                     ^----------------^
                                  Берём число с конца зеркально

Но тут многое не учитывается. Например, что в массиве может быть нечётное количество чисел


int middle = (int)Math.floor((a.length - 1) / 2);
    
for (int i = 0; i <= middle; ++i) {
    if (i == middle && a.length % 2 != 0)
        System.out.println(a[i]);
    else
        System.out.println(a[i] + " " + a[a.length - 1 - i]);
}
→ Ссылка
Автор решения: default locale

Это можно реализовать множеством способов, но, имхо, наиболее простой для понимания способ это проставить два указателя: на начало и конец массива и с каждой итерацией двигать их навстречу друг другу:

int [] a = {5, 8, 1, 31, 17, 16, 2, 6, 5, 13};
int left = 0;
int right = a.length-1;
while(left<right) {
    System.out.println(a[left] + " "+a[right]);
    left++;
    right--;
}
//Строка ниже нужна если средний элемент массива с нечетным 
//количеством элементов нужно выводить только один раз.
//Если его нужно продублировать, то строку нужно удалить,
//а в цикле изменить условие на left<=right
if(left==right) System.out.println(a[left]);
→ Ссылка