Retornar uma array com valores na ordem inversa

Estou tentando fazer um programa em que dada um array de objetos com n elementos, retorne outra array com os mesmos elementos só que na ordem inversa. Eu tentei codificar, mas não estou conseguindo compilar. Gostaria de saber como corrigir o erro e se existe uma outra maneira de se fazer além da que eu pensei. Obrigado.

public class ArrayInverse {

		
	public void Reverse(int array[])
	{
		int arrayInverse[] = new int[array.length];
		int aCount = 0;
		
		for(int i = array.length-1; i >= 0;i-- )
		{
			arrayInverse[aCount] = array[i];
			aCount++;
		}
		for(int i = 0; i <= arrayInverse.length;i++)		
		System.out.println(arrayInverse[i]);
		}

public class Test {

    	public static void main(String[] args)
    	{
    		ArrayInverse ai = new ArrayInverse();
    		ai.Reverse(new int[]{5,3,42,42,32,2});
    		
    		
    		
    	}
    }

Retornou isso

2
32
42
42
3
5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
	at Test.ArrayInverse.Reverse(ArrayInverse.java:17)
	at Test.Test.main(Test.java:9)

Preste atenção no FOR que você fez para imprimir os elementos do array, você está tentando acessar uma posição do array que não existe.

1 curtida

Ta com problema no seu for como o flavio mencionou.Tente:

for(int i = 0; i < arrayInverse.length;i++)        
    System.out.println(arrayInverse[i]);
}
1 curtida
public class Teste {

	public static void main(String[] args) {
		ArrayInverse ai = new ArrayInverse();

		int[] reverse = ai.reverse(new int[] { 5, 3, 42, 42, 32, 2,11,44,55,66 });

		for (int i = 0; i < reverse.length; i++) {
			System.out.println(reverse[i]);
		}
	}
}

class ArrayInverse {
	
	public int[] reverse(int array[]) {

		int[] arrayInverse = new int[array.length];
		int x = array.length-1, i = 0;
		while (i < array.length) {
			arrayInverse[i] = array[x];
			x--;
			i++;
		}

		return arrayInverse;
	}

}

2 curtidas

Muito obrigado gente, deu certo agora.

1 curtida