Problemas com sort

2 respostas
B

eu tenho uma classe pessoa que possui nome e idade sendo que
vou digitando nomes e idades depois tenho q ordenar por nome em ordem alfabética, sendo que se tiver nome igual o critério de desempate eh a idade.
classe pessoa

public class Pessoa {
    String  sNome;
    Integer iIdade;
    
    public Pessoa(String sNome, Integer iIdade) {
        this.sNome = sNome;
        this.iIdade = iIdade;
    }
    public int compareTo(Object o) {
        Pessoa aux=(Pessoa)o;
        int resultado = sNome.compareTo(aux.sNome);
        if (resultado== 0) resultado = iIdade.compareTo(aux.iIdade);
        return resultado;
    }
    
}

classe que tem os metodos para gravar e listar as pessoas

import java.util.ArrayList;
import java.util.Collections;

public class DadosPessoa{
    
    ArrayList aList = new ArrayList();  
    public void grava(Pessoa p){
        aList.add(p);
    }
    public Pessoa[] lista(){
        Collections.sort(aList);//AQUI ACONTECE O ERRO!!!!!!!!
        Pessoa[] aux = new Pessoa[aList.size()];
        for (int i=0; i < aList.size(); i++){
            aux[i] = (Pessoa)aList.get(i);            
        }
        return aux;
    }    
}

classe que testa

import javax.swing.JOptionPane;

public class TestaPessoa {
    
    public static void main (String args[]){
        DadosPessoa dPessoa = new DadosPessoa();
        for (int i=0; i < 2; i++){
            String sNome  = JOptionPane.showInputDialog(null,"Digite o nome: ");
            String sIdade = JOptionPane.showInputDialog(null,"Digite a Idade: ");
            dPessoa.grava( new Pessoa(sNome, Integer.parseInt(sIdade) ));           
        }
        imprime(dPessoa.lista(),"Teste");
        
        System.exit(0);
    }
     static void imprime(Pessoa[] pessoas, String sTitle) {
       String msg="";
       for(int i=0;i<pessoas.length;i++) {
           msg += "Nome : "+ pessoas[i].sNome +"\n"+
                  "Idade: "+ pessoas[i].iIdade+"\n\n"; 
       }       
       JOptionPane.showMessageDialog(null,msg,sTitle,JOptionPane.INFORMATION_MESSAGE);
    }
}

alguém pode me ajudar com o problema q acontece ao dar o SORT?

2 Respostas

W

to com um problema parecido com o teu, e olha que minha aplicação é bem mais simples que a tua.

Acho que para ordenar uma matriz não existe um método, esse método sort é só pra unidimensional. Até da pra ordenar uma coluna ou uma linha, mas dai desorganiza toda a matriz.

Tem que inventar um método, eu to bolando um, quando acabar posto aqui.

B

OK Valeu!

Criado 3 de maio de 2005
Ultima resposta 4 de mai. de 2005
Respostas 2
Participantes 2