Como funciona?

3 respostas
W

Olá pessoal, depois de ficar vários dias sem postar uma dúvida sugiu uma…
Estou criando um programa que cadastra registros em uma agenda, criei 3 métodos, um que adiciona registros a agenda, um que visualiza o registro da agenda e um outro que exclui o registro da agenda.

import java.util.Scanner;
import MinhasClasses.Registro;

public class AdRegistro {
    private int top = 0;
    private int max = 100;
    private Registro [] lista;
    
    public static void main (String args[]) {
        Scanner action = new Scanner(System.in);
        AdRegistro objeto = new AdRegistro();
        int option = 0;
        while (true) {
            System.out.println("[1] Adicionar um registro");
            System.out.println("[2] Visualizar registros");
            System.out.println("[3] Excluir um registro");
            System.out.println("[0] Exit");
            try {
                option = action.nextInt();
            } catch (Exception e) {
                System.out.println("Erro");
            }
            switch (option) {
                case 1: objeto.adicionarRegistro(); break;
                case 2: objeto.visualizarRegistros(); break;
                case 3: objeto.excluirRegistro(); break;
                case 0: System.exit(0);
                default: System.out.println("Comando desconhecido");
            }
        }
    }
    public AdRegistro() {
        lista = new Registro[max];
    }
    public void adicionarRegistro() {
        Scanner keyln1 = new Scanner(System.in);
        Scanner keyln2 = new Scanner(System.in);
        String Nome = "";
        String Email = "";
        if (top == max) {
            System.out.println("Sem memória");
        }
        try {
            System.out.println("Digite o nome: ");
            Nome = keyln1.next();
            System.out.println("Digite o email: ");
            Email = keyln2.next();
        } catch (Exception e) {
            System.out.println("Erro");
        }
        Registro entry = new Registro(Nome, Email);
        lista[top] = entry;
        top++;
    }
    public void visualizarRegistros() {
        for (int index = 0; index < top; index ++) {
            System.out.println((index+1)+" Nome: " + lista[index].getNome());
            System.out.println("  Email: " + lista[index].getEmail());
        }
    }
    public void excluirRegistro() {
        int index = 0;
        Scanner option = new Scanner(System.in);
        System.out.println("Digite o número do registro");
        try {
            index = option.nextInt();
        } catch (Exception e) {
            System.out.println("Eroo");
        }
        for (int i = index; i < top; i++) {
            lista[i] = lista[i + 1];
            lista[top] = null;
            top --;
        }
    }
}

o ultimo metodo, o que faz a exclusão, eu não estou conseguindo entender como ele funciona, será que vcs poderiam me dizer como funciona de uma forma clara?

Desde já agradeço a todos a ajuda

3 Respostas

Abdon

Ola,

public void excluirRegistro() {   
        int index = 0;   
        Scanner option = new Scanner(System.in);   
        System.out.println("Digite o número do registro");   
        try {   
            //aqui vc pega o numero do registro que tb é o indice do array
            index = option.nextInt();   
        } catch (Exception e) {   
            //Erooooooo  =))
            System.out.println("Eroo");   
        }   
        // ja possuindo este indice, este for não se inicia do zero
        for (int i = index; i < top; i++) {   
            // aqui o indice escolhido é morto e sobreposto pela proxima posição
            lista[i] = lista[i + 1];   
            // Como foi retirada uma posição, para não haver duplicação se mata o ultimo registro
            lista[top] = null;   
            // Aqui vc mantem atualizado a quantidade de registros que vc tem na usa agenda
            top --;   
        }   
    }

Espero ter ajudado

ViniGodoy

Você acha a posição do registro a ser excluído. Vamos supor que seja a letra D, que está na posição 3, da lista abaixo:

A B C D E F G H I J

Depois, você pega todos os que vem na posição após o D, e reduz a posição dele em 1 (isso é o que o for faz):
A B C E F G H I J J

O que falta agora? Eliminar o último elemento. É isso que os comandos list[top] = null e top-- fazem.

W

Vallew msm, estou bem mais esclarecido agora

Criado 18 de novembro de 2007
Ultima resposta 18 de nov. de 2007
Respostas 3
Participantes 3