Pessoal estou tentando fazer um Sort para dois vetor.
Vetor de Nome e de Altura.
Preciso colocar em ordem alfabetica pelo Nome usando o BubbleSort.
Do jeito que está ele está fazendo pela altura.
Segue o código que estou usando.
String AuxNome[] = NomeJogador.clone();
String AuxN;
for (int i = 0; i < AlturaJogador.length; i++) {
for (int j = 0; j < AlturaJogador.length - 1; j++) {
if (AlturaJogador[j] > AlturaJogador[j + 1]) {
Aux = AlturaJogador[j];
AlturaJogador[j] = AlturaJogador[j + 1];
AlturaJogador[j + 1] = Aux;
AuxN = AuxNome[j];
AuxNome[j] = AuxNome[j + 1];
AuxNome[j + 1] = AuxN;
}
}
}
System.out.println(Arrays.asList(AuxNome));
System.out.println(Arrays.toString(AlturaJogador));
Para verificar se uma string é posterior à outra (alfabeticamente falando), você precisa usar o método compareTo da classe Sttring. Troque a linha:
if (AlturaJogador[j] > AlturaJogador[j + 1]) {
por
if (AuxNome[j].compareTo(AuxNome[j + 1]) > 0) {
Abraço.
1 curtida
Muito Obrigado!
Não tinha percebido essa função dentro do String.
Para entendimento poderia me explicar qual a função do " >0 ", o que ele faz neste teste logico?
Se você olhar a documentação do método compareTo
, vai descobrir que ao chamar objeto1.compareTo(objeto2)
ele vai retornar:
-
Zero (numero == 0) quando
objeto1
for igual à objeto2
;
- Um número positivo (
numero > 0
) quando objeto1
for maior que objeto2
;
- Um número negativo (
numero < 0
) quando objeto1
for menor que objeto2
;
1 curtida
Obrigado pela explicação!
1 curtida