Cadastrar e mostrar em ordem alfabética

2 respostas
M

Olá a todos, meu primeiro tópico aqui no fórum e gostaria de pedir uma força a vocês. Fiz um algoritmo com intuito de armazenar nomes em um vetor, e mostrá-los em ordem alfabética. O problema é que do modo como eu fiz, que é bem dizendo um esqueleto pro projeto, só consigo desenvolve-lo ate um certo numero de cadastros, e no caso os faço um numeros de algoritmos pra ir comparando com forme o número máximo do vetor. Mas o objetivo é que ele cadastre quantos cadastros a pessoa quiser a partir dai mostrar organizado. O professor não nos deichou usar o método sort nem boblesort(acho que é assim rs), justamento por não termos aprendido e esse método facilita mais. Segueo codigo

package controledecds ;
import java.util.Scanner;

public class NewClass{
      
    public static void main(String[] args) {  
        Scanner scan=new Scanner(System.in);
       
        String vet[]= new String[3];
        for (int i = 0; i <vet.length; i++) {
          System.out.println("Digite um nome");
          
         vet[i]=scan.nextLine();
        
        } 
        System.out.println("-------");
        for (int j = 0; j <vet.length; j++) {
            if(vet[j+1].compareTo(vet[j])>0){
                String aux;
                aux=vet[j];
                vet[j]=vet[j+1];
                vet[j+1]=aux;
                
            }
            
            if(vet[j+2].compareTo(vet[j+1])>0){
                String aux;
                aux=vet[j+1];
                vet[j+1]=vet[j+2];
                vet[j+2]=aux;
            }
            if(vet[j+1].compareTo(vet[j])>0){
                String aux;
                aux=vet[j+1];
                vet[j+1]=vet[j];
                vet[j]=aux;
            }
            
            if(vet[j].compareTo(vet[j+2])>0){
                String aux;
                aux=vet[j+2];
                vet[j+2]=vet[j];
                vet[j]=aux;
            }
            
            for (int k = 0; k< vet.length; k++) {
                System.out.println(vet[k]);
                
            }
    }  
        
        }
}
[]s

2 Respostas

tveronezi

Use “TreeSet”: http://docs.oracle.com/javase/6/docs/api/java/util/TreeSet.html

thiago_dias

Cara, vetores são estruturas inflexíveis. Ao criá-los, você é obrigado informar o tamanho (existem algumas maneiras de instanciar arrays sem informar o tamanho, porém isso ainda não te ajudaria).

Se o requisito do trabalho é utilizar apenas array de String, fica um pouco complicado atingir o seu objetivo sem a famosa POG. Minha dica é: Utilize um tamanho que você saiba que nunca vai estourar, por exemplo, new String[50]. Ou então solicite ao usuário a quantidade de pessoas que ele quer cadastrar(acho isso muito porco, mas já vi na faculdade), aí basta criar o array com a informação recebida.

O algoritmo de ordenação que você criou ficaria inviável para os casos que citei… de uma olhada na dica do ViniGodoy:
http://www.guj.com.br/java/274971-duvidas-como-ordenar-uma-lista-de-nomes-em-ordem-alfabetica#1445541

Posteriormente, pesquise a API Collections do Java… o seu problema seria facilmente resolvido com uma das implementações de List.

Falou!

Criado 18 de julho de 2012
Ultima resposta 18 de jul. de 2012
Respostas 2
Participantes 3