Ordenar Array bidimensional por ordem alfabetica

8 respostas
brunoejaera

Estou fazendo uma agenda pra trabalho da facul e estou tendo problemas no método que ordena o array.

Segue o código onde está o problema.

public void ordenar(){
        int tamanho,auxInt;
        String auxCar;
        double auxRea;
        tamanho = compactar();
        for(int i = 0; i < tamanho -1; i++){
            for(int j = i + 1; j < tamanho; j++){
                //O problema aparece na linha de baixo.
                if((agenda[0][i]) > (agenda[0][j])){
                    auxCar = agenda[0][j];
                    agenda[0][i] = agenda[0][j];
                    agenda[0][j] = auxCar;
                    
                    auxCar = agenda[1][i];
                    agenda[1][i] = agenda[1][j];
                    agenda[1][j] = auxCar;
                    
                    auxInt = agendaIdade[i];
                    agendaIdade[i] = agendaIdade[j];
                    agendaIdade[j] = auxInt;
                    
                    auxRea = agendaSalario[i];
                    agendaSalario[i] = agendaSalario[j];
                    agendaSalario[j] = auxRea;
                }
            }
        }
    }

Vou colocar tbm um outro método, já que o de cima vai chamar o de baixo, não sei se vai ajudar em alguma coisa mas se ficar mais facil pra intender o código.

public int compactar(){
        int idx = -1;
        for(int i = 0; i < agendaAtivo.length -1; i++){
            if(agendaAtivo[i]){
                idx += 1;
                if(i != idx){
                    agenda[0][idx] = agenda[0][i];
                    agenda[1][idx] = agenda[1][i];
                    agendaIdade[idx] = agendaIdade[i];
                    agendaSalario[idx] = agendaSalario[i];
                    agendaAtivo[idx] = agendaAtivo[i];
                    agendaAtivo[i] = false;
                }
            }
        }
        return idx;
    }

8 Respostas

fernandosavio

Posta o erro para facilitar a ajuda…

brunoejaera

o erro seria na parte da lógica em si pra ordenar o array por ordem alfabética.

fernandosavio

Então está compilando certo… apenas não retorna o resultado desejado? é isso?

fernandosavio
auxCar = agenda[0][j];  //não seria auxCar = agenda[0][i]; ???
 agenda[0][i] = agenda[0][j];  
 agenda[0][j] = auxCar;
brunoejaera

então cara, o erro está sendo no if()…o compilador não deixa eu fazer aquela comparação usando o " > ", se eu ti mandar o arquivo com todo fica mais facil pra vc visualizar o erro ??

fernandosavio

que tipo de dado agenda[][] armazena?

brunoejaera

armazena valores do tipo string.

fernandosavio

Entao não pode ser comparado com o sinal >
Tem que comparar com o método compareTo da classe String
dá uma pesquisada nisso que teu código vai funcionar…

Criado 25 de setembro de 2011
Ultima resposta 25 de set. de 2011
Respostas 8
Participantes 2