Ordenação de Vetores

2 respostas
C

Bom dia galera, seguinte, estou montando esse trabalho para faculdade, porém estou com umas duvidas.
1° Preciso ordenar a lista q fiz de cadastro por Nomes, exemplo: Cadastrei, Carlos, Alberto e Joao, precisa ser por ordem alfabetica Alberto primeiro depois Carlos e por ultimo Joao. Mas tem outros dados nesse cadastro como Rua, telefone cpf, e na hora de mostrar precisava de mostrar os dados certos de cada cliente. ( E ai que ta a duvida como que posso fazer isso. )
2° Como que faço para limpar todos os meus vetores?

abaixo está o codigo que já fiz:

import java.util.Scanner;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Usuario
 */
public class Cadastros {
    
    public static void main(String args[]){
    Scanner entrada = new Scanner(System.in);
    String nomes[] = new String[20];
    String rua[] = new String[20];
    String cidade[] = new String[20];
    int cpf[] = new int[20];
    int telefone[] = new int[20];
    int saida = 8;
    int opc, cont=0;

    while(saida != 0)
    {
        System.out.print("===============================================\n");
        System.out.print("Escolha um valor para realizar a tarefa:\n");
        System.out.print("1 - Cadastrar novo Cliente\n");
        System.out.print("2 - Mostrar lista de clientes ordenado por nome\n");
        System.out.print("3 - Mostrar lista de clientes ordenado por cpf\n");
        System.out.print("4 - Remover todos os clientes\n");
        System.out.print("5 - Alterar Endereço dado o Nome \n");
        System.out.print("6 - Alterar Telefone dado o CPF\n");
        System.out.print("0 - SAIR\n");
        System.out.print("===============================================\n");
        System.out.print("Digite abaixo, a opção desejada:\n");
        saida = entrada.nextInt();
        
        if ( saida == 1){
            for (int i=0; i != 1; i++){
                System.out.println("Digite o Nome:");
                nomes[cont] = entrada.next();
                System.out.println("Digite o Rua:");
                rua[cont] = entrada.next();
                System.out.println("Digite a Cidade:");
                cidade[cont] = entrada.next();
                System.out.println("Digite o CPF (apenas numeros):");
                cpf[cont] = entrada.nextInt();
                System.out.println("Digite o Telefone (apenas numeros):");
                telefone[cont] = entrada.nextInt();
                
                cont++;
                System.out.println("Deseja registrar outro Cliente?");
                System.out.println("1 - SIM , 0 - NAO");
                i = entrada.nextInt();
            }
            
            if (saida == 2){
                    for( int b=0; b<cont; b++){
                        System.out.println("Nome....: "+nomes[cont]);
                        System.out.println("CPF.....: "+cpf[cont]);
                        System.out.println("End.....: "+rua[cont]);
                        System.out.println("Cidade..: "+cidade[cont]);
                        System.out.println("Tel.....: "+telefone[cont]);
                    }
                }
            else{}
            }
    
        }
        
     
    }
    

}

Obrigado :slight_smile:

2 Respostas

I

refaça o for setando valores nulos no vetor,
ex: a.[i] = 0;

Jemerson
Veja esse exemplo de ordenação de inteiros:
public static void sort(int vetor[]){
        int elemento,i=0;
        int n=vetor.length;
        for(int j=1;j<n;j++){

            elemento=vetor[j];              
            i=j-1;
            
            while((i>=0) && (vetor[i]>elemento)){
                vetor[i+1]=vetor[i];
                i--;
               vetor[i+1]=elemento;

            }


        }
}
se os dados dos vetores forem equivalentes, ou seja:
String cliente[]={"Jose","Maria"};
int idade[]={30;20};

José está na posição 0 , logo sua idade está em idade na posição 0, concorda?
Se você estiver de acordo, basta colocar esse vetor idade para realizar a troca de posições dentro do laço
onde está sendo realizada a troca dos elementos.( linha 10 em diante).
Ou seja, em vez de você ter apenas um vetor sendo ordenado, você terá todos.

Tente seguir essa ideia e qualquer coisa pergunta.

Criado 27 de novembro de 2011
Ultima resposta 28 de nov. de 2011
Respostas 2
Participantes 3