Como inverter a ordem das linhas de saída no java

5 respostas Resolvido
R
Alguém sabe como inverter a ordem das linhas de saída do algoritmo no java?? Por exemplo:

Vamos supor que  o código:

AlgumaCoisa{

int vet[]=new int[4];

vet[0]=2;

vet[1]=4;

vet[2]=6;

vet[3]=8;
for(int i=0;i<4;i++){

System.out.println(vet[i]);

}

}

A saída vai ser:
2
4
6
8

Gostaria de inverter a ordem da saída das linhas, nesse caso:
8
6
4
2

Mas sem mudar a configuração do for, apenas mudar o System.out…

Eu tinha pensado em uma saída que após a digitação da primeira linha, o programa jogasse essa linha pra linha seguinte, e assim por diante, por exemplo:
O programa digitou na primeira linha: 1
Esse 1 vai para próxima linha e a primeira linha vai ser reservada para a próxima digitação.
E assim por diante.

5 Respostas

W
System.out.println(vet[vet.length - 1 - i]);
R

Olá wldomiciano, obrigado por responder. Infelizmente não era bem isso que eu queria. Acho que me expressei errado, desculpa.
Vou tentar explicar mudando o exemplo:

Vamos supor que tem o seguinte algoritmo em java:

public class Teste {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	test(0);
	
}

public static void test(int cont){
	
	if(cont<5) {
		test(cont+1);
		System.out.println(cont+" texto "+cont);
		
	}
	
}

}

A saída desse algoritmo ficou:

4 texto 4
3 texto 3
2 texto 2
1 texto 1
0 texto 0

Gostaria de inverter a ordem de linha da saída, ou algo assim, para que a saída resulte em:

0 texto 0
1 texto 1
2 texto 2
3 texto 3
4 texto 4

Mas sem mudar o valor inicial do cont que é o 0. Apenas o System.out se for possível.

Será que não tem como fazer com que na saída, após a digitação da primeira linha, o programa jogasse essa linha pra linha seguinte, e assim por diante, por exemplo:
O programa citado digitou na primeira linha: 4 texto 4
Esse “4 texto 4” vai para próxima linha e a primeira linha vai ser reservada para a próxima digitação., no caso o “3 texto 3”, resultando em:

3 texto 3
4 texto 4

Agora o programa vai exibir “2 texto 2”. Assim, jogando para baixo o que foi exibido anteriormente e colocando na primeira linha o “2 texto 2”, resultando em:

2 texto 2
3 texto 3
4 texto 4

E assim por diante.

W
Solucao aceita

Basta vc invocar o println antes do test, assim:

public static void test(int cont){
  if(cont < 5) {
    System.out.println(cont + " texto " + cont);
    test(cont + 1);
  }
}

Mas meu raciocionio anterior ainda vale pra esse seu segundo exemplo:

class Main {
  private static final int MAX = 5;
  
  public static void main(String[] args) {
    test(0);
  }

  public static void test(int cont) {
    if (cont < MAX) {
      test(cont + 1);
      cont = MAX - 1 - cont;
      System.out.println(cont + " texto " + cont);
    }
  }
}

E aqui uma solução usando Deque que pode ser bem flexivel:

import java.util.ArrayDeque;
import java.util.Deque;

class Main {
  private static final Deque<String> lines = new ArrayDeque<>();
  
  public static void main(String[] args) {
    test(0);
    lines.forEach(System.out::println);
  }

  public static void test(int cont) {
    if (cont < 5) {
      test(cont + 1);
      lines.add(cont + " texto " + cont);
    }
  }
}
L
int vet[] = new int[4];
vet[0] = 2;
vet[1] = 4;
vet[2] = 6;
vet[3] = 8;

for(int i = vet.length-1; i >= 0; i--) {
	System.out.println(vet[i]);
}
R

Obrigado wldomiciano. A 3 solução que você mencionou resolveu meu problema.
Eu tinha esquecido de mencionar que o cont dentro do System.out.println na verdade era para ser valores aleatório jogados pelo sistema ou pelo usuário. Mas a 3 solução deu certo, vlw!

Criado 3 de abril de 2020
Ultima resposta 3 de abr. de 2020
Respostas 5
Participantes 3