Arrays - Não ordena de maneira correta

2 respostas
A
Fiz um método de ordenação mas ele não funciona de maneira correta e  compila se eu usar um tratamento de exceção!!!O codigo é o seguinte:

public void OrdenaVetor(Prob Vet_Prob[]){

Prob Aux ;

int i = 0,j;

try{

for (i = 0;i < 5; i++) {

for(j = i + 1; j < 5;j++){

if (Vet_Prob[i].MostrarDados() >= Vet_Prob[j].MostrarDados()){

Aux = Vet_Prob[i];

Vet_Prob[i] = Vet_Prob[j];

Vet_Prob[j]= Aux;

}

}

}

}

catch (NullPointerException e){}

i = 0;

while(Vet_Prob[i] != null){

System.out.println(Vetor Ordenado+ i + Vet_Prob[i].MostrarDados());

i++;

}

}

estou chamando o método al clicar em um botão:

OrdenaVetor(Vet_Prob);

Bom eu fiz um teste de mesa e deu certo só não sei pq no programa nao esta funcionando. Não sei mais o que faço pra concertar, coloquei uns System.out pra ver se tava carregando os dados de maneira correta e esta sendo carregado corretamente:oops:

2 Respostas

A

Help!!Help!!Help!!Help!!Help!!Help!!

L

Olha só, tem uns errinhos que puts, porque vc teria um null dentro do vetor que quer ordenar?! e se tivesse null ele não deveria ficar no final do vetor?! da maneira como vc implementou ele não vai fazer isso (colocando catch(NullPointerException e), no lugar que esta, a hora que encontrar o null vai parar de ordenar)… outra coisa, seu vetor tem sempre tamanho 5?! senão pode dar IndexOfBoundException facil facil…

A maneira como vc mostra tb pode fazer IndexOfBoundException (colocando while(vet[i] != null))…

enfim, tem bastante errinhos… então optei em colocar o código aqui e vc analisar e procurar seus erros…

Segue:

public class Teste {

	static class Prob {
		private int i;

		public Prob(int i) {
			this.i = i;
		}

		public int mostrarDados() {
			return i;
		}

	}

	public static void ordenaVetor(Prob vet[]) {
		Prob Aux;
		int i = 0, j;
		for (i = 0; i < vet.length; i++) {
			for (j = i + 1; j < vet.length; j++) {
				if (vet[i] == null
						|| (vet[j] != null && vet[i].mostrarDados() >= vet[j]
								.mostrarDados())) {
					Aux = vet[i];
					vet[i] = vet[j];
					vet[j] = Aux;
				}
			}
		}
		for (i = 0; i < vet.length; i++) {
			if (vet[i] == null)
				break;
			System.out.println("Vetor Ordenado " + i + " - "
					+ vet[i].mostrarDados());
		}
	}

	public static void main(String[] args) {
		Prob[] o = { new Prob(4), null, new Prob(5), new Prob(3), new Prob(2) };
		ordenaVetor(o);
	}
}

Ps: Fiz uma classe qualquer para fazer o papel de Prob

Criado 9 de junho de 2007
Ultima resposta 11 de jun. de 2007
Respostas 2
Participantes 2