Ajuda com código

[quote=Ademir Franco]Galera, alguém poderia me dizer oq tem de errada na ordenação do decrescente, sai tudo errado, o crescente sai certim.

[code]import javax.swing.*;
public class Idades {
public static void main(String[] args) {
int total = 0, par = 0, impar = 0, maior = 0, aux, inf = 0, juv = 0, adu = 0, menor = 9999, z = 0;
int[] idades = new int[7];
String[] resp = new String[7];
int[] inversa = new int[7];

    for(int i=0; i<7; i++) {     
        resp[i] = JOptionPane.showInputDialog("Qual é a idade ?");     
        idades[i] = Integer.parseInt(resp[i]);     
        if (idades[i] % 2 == 0) {     
            par++;     
        } else {     
            impar++;     
        }     
        if (idades[i] <= 12) {     
            inf++;     
        }     
        if (idades[i] >= 13 && idades[i] <=17 ) {     
            juv++;     
        }
        if (idades[i] > 17) {
            adu++;     
        }     
        total = total + idades[i];     
        if (idades[i] > maior) {     
            maior = idades[i];     
        }     
        if (idades[i] < menor) {     
            menor = idades[i];     
        }     
    } // end of for     
    for (int i=0; i<7; i++) {     
        JOptionPane.showMessageDialog(null, "As idades digitadas foram : " + idades[i], "Resposta", 2);     
    }
        for (int c=0; c<idades.length; c++) {     
        for(int d=idades.length-1; d>c; d--) {     
            if (idades[d-c] > idades[d]) {     
                aux = idades[d-1];     
                idades[d-c] = idades[d];     
                idades[d] = aux;     
            }     
        }     
    }     
    JOptionPane.showMessageDialog(null, "As idades digitadas em ordem crescente foram : " + idades[0] + idades[1] + idades[2] + idades[3] + idades[4] + idades[5] + idades[6], "Resposta", 2);          
    for (int a=0; a<idades.length; a++){     
        for (int b=idades.length-1; b>a; b--) {     
            if (idades[b-a] < idades[b]) {     
                aux = idades[b-1];     
                idades[b-a] = idades[b];     
                idades[b] = aux;     
            }     
        }     
    }     
     JOptionPane.showMessageDialog(null, "As idades digitadas em ordem decrescente foram : " + idades[0] + idades[1] + idades[2] + idades[3] + idades[4] + idades[5] + idades[6], "Resposta", 2);
         
    JOptionPane.showMessageDialog(null, "A menor idade foi: " + menor, "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "A maior idade foi: " + maior, "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "A média das idades foi: " + total/7, "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Foram digitados " + par + " idades pares", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Foram digitados " + impar + " idades impares", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Há " + inf + " crianças", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Há " + juv + " adolescentes", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Há " + adu + " adultos", "Resposta", 2);     
}     // end of main

} // end of class [/code][/quote]

Esse código está um pouco confuso… eu não entendi muito bem. Se você já tem ele ordenado em ordem crescente, porque você simplesmente não inverte o vetor?? Ele está assim: 1234567, então mostre ele 7654321. ( Primeiro a última posição, depois a penúltima… ).

E uma dica para visualizar melhor, separe o código em métodos, fica mais fácil de manter. Por exmplo: Está tudo funcionando, menos a ordem decresente. Se estivesse separado em métodos, você só mexeria no método específico. E fica muito mais simples de ver o algoritmo utilizado…

[EDIT]
Ah… desculpe, mas eu não respondi. Eu uso o BubbleSort para essas pequenas ordenações… E funciona tanto decresente quanto crecente

[code]

private static void ordenarDecrescente(final int[] idades) {
boolean trocou = true;
do{
trocou = false;
for(int a = 0; a < idades.length-1; a++){
if(idades[a] < idades[a+1]){
int aux = idades[a];
idades[a] = idades[a+1];
idades[a+1] = aux;
trocou = true;
}
}
}while (trocou);

  }[/code]