Reverse Array не могу вывести с цикла

введите сюда описание изображенияpublic class ReverseArray {

public static String[] reverse(String[] strings) {
    //TODO: Напишите код, который меняет порядок расположения элементов внутри массива на обратный.
    for (int i = strings.length-1;i>=0;i-- ) {
       System.out.print(strings[i]);
    }
    return strings;
}

//застрял на элементарном функция разворачивает массив но как вывести результат из цикла?


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

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

Оно?

String[] newStringArr = new String[str.length];

for (int i = str.length - 1; i >= 0; i--) {
   newStringArr[str.length - 1 - i] = str[i];
}

return newStringArr;
→ Ссылка
Автор решения: Nowhere Man

Строго говоря, если просто меняется порядок элементов во входном массиве, метод reverse не обязан возвращать тот же самый массив и потому может иметь тип void (как и Arrays.sort).

Для перестановки элементов нужно просто пройти входной массив до середины, переставляя первый и последний элементы:

@SuppressWarnings("unchecked")    
public static <T> void reverse1(T[] arr) {
    for (int i = 0, n = arr.length, m = n-- / 2; i < m; i++) {
        T tmp = arr[i];
        arr[i] = arr[n - i];
        arr[n - i] = tmp;
    }
}

@SuppressWarnings("unchecked")    
public static <T> T[] reverse(T ... arr) {
    for (int i = 0, n = arr.length, m = n-- / 2; i < m; i++) {
        T tmp = arr[i];
        arr[i] = arr[n - i];
        arr[n - i] = tmp;
    }
    return arr;
}

Для массивов примитивных типов int[], long[], double[], и т.д. потребуется написать отдельные перегруженные методы:

public static int[]  reverse(int ... arr)  {...}
public static long[] reverse(long ... arr) {...}
// etc.

Пример для конкретного массива String[]:

public static String[] reverse(String ... arr) {
    for (int i = 0, n = arr.length, m = n-- / 2; i < m; i++) {
        String tmp = arr[i];
        arr[i] = arr[n - i];
        arr[n - i] = tmp;
    }
    return arr;
}
→ Ссылка