Ir ao conteúdo
  • Cadastre-se

Como fazer um loop para deletar novamente


Posts recomendados

Boa noite, to em duvida como fazer um loop que apareça mensagem se deseja apagar novamente o funcionario cadastrado digitando o nome do mesmo para ser apagado, alguém ajuda ai com o meu codigo  ? 

 

eu ja tentei while(true){

 

mais da erro na hora de excluir pela segunda vez 


        if(asus.removerRegistro(JOptionPane.showInputDialog("informe nome a ser removido: "), quant)){
            JOptionPane.showMessageDialog(null,"registro removido com sucesso!!!");   
        }else{
            JOptionPane.showMessageDialog(null,"registro não encontrado.");
        } 
        for(int i=0;i<quant;i++){ // Essas linha mostra a lista de funcionario apos eu ter excluido um dos funcionario que cadastrei MOSTRANDO NA TELA 
            if(asus.user[i]!=null){//
                asus.user[i].Mostra();//
            }    
        }
    }

 

Link para o comentário
Compartilhar em outros sites

você tem o codigo ai ? Para retornar 

adicionado 1 minuto depois

@Catí Kurumim 7 Aqui o codigo pra você ver 

import javax.swing.JOptionPane;
public class Empresa {
    String codigo,nome,cnpj;
    Funcionario user[];
    
    public Empresa(int quant){
        user=new Funcionario[quant];
        for(int i=0;i<quant;i++){
            this.user[i]=new Funcionario();
        }
    }
    public void todosFuncionarios(int quant){
        for(int i=0,j=1;i<quant;i++,j++){
            this.user[i].nome= JOptionPane.showInputDialog("informe o nome do funcionario"+j);
            this.user[i].codigo= JOptionPane.showInputDialog("informe o codigo do funcionario"+j);
            this.user[i].matricula= Integer.parseInt(JOptionPane.showInputDialog("informe a matricula do funcionario "+j));
            this.user[i].salario= Float.parseFloat(JOptionPane.showInputDialog("informe o salario do funcionario"+j));
            this.user[i].setor.codigo=JOptionPane.showInputDialog("informe o codigo do setor do funcionario"+j);
            this.user[i].setor.descricao=JOptionPane.showInputDialog("informe a descrição do setor do funcionario"+j);
        }
    }
    public float folhaDePagamento(int quant){
        float total=0;
        for(int i=0;i<quant;i++){
            total+=this.user[i].salario;
        }
        return(total);
    }
    public boolean removerRegistro(String nome,int quant){
        int cont =0;
        for(int i=0;i<quant;i++){
            if(this.user[i].nome.equals(nome)){
                this.user[i]=null; cont++;
            }
        }
        if(cont>0){
            return(true);
        }
        return(false);
    }
}

--------------------------------------------------------------------------------------------------

import javax.swing.JOptionPane;


public class Funcionario {
    String codigo,nome;
    int matricula;
    float salario;
    Setor setor;
    public Funcionario(){
        this.setor=new Setor();
    }
   
    public void Mostra() {
        JOptionPane.showMessageDialog(null,
            "\nNome do funcionario: "+this.nome+""
            +"\nCodigo do funcionario: "+this.codigo+""   
            +"\nSalario do funcionario: "+this.salario+""
            +"\nMatricula do funcionario: "+this.matricula+""
            +"\nCodigo do setor do funcionario: "+this.setor.codigo+""
            +"\nDescrição do funcionario: "+this.setor.descricao);
    }
}    

------------------------------------------------------------------------------------------------------------------
import java.util.Scanner;
import javax.swing.JOptionPane;


public class Principal {
    public static void main (String [] args){
        int quant=Integer.parseInt(JOptionPane.showInputDialog("quantidade de funcionarios"));
        Empresa asus = new Empresa(quant);  
        asus.codigo=JOptionPane.showInputDialog("Informe o codigo da empresa: ");
        asus.nome=JOptionPane.showInputDialog("Informe o nome da empresa: ");
        asus.cnpj=JOptionPane.showInputDialog("Informe o cnpj da empresa: ");
        asus.todosFuncionarios(quant);
        for(int i=0;i<quant;i++){
            if(asus.user[i]!=null){
                asus.user[i].Mostra();
            }
        }
        JOptionPane.showMessageDialog(null,"Total da folha de pagamento da empresa R$: "+asus.folhaDePagamento(quant));
        if(asus.removerRegistro(JOptionPane.showInputDialog("informe nome a ser removido: "), quant)){
            JOptionPane.showMessageDialog(null,"registro removido com sucesso!!!");   
        }else{
            JOptionPane.showMessageDialog(null,"registro não encontrado.");
        } 
        for(int i=0;i<quant;i++){
            if(asus.user[i]!=null){
                asus.user[i].Mostra();
            }    
        }
    }
    //MEnu tentei fazer mais nao deu certo
   /*
    public static void menu(){
       JOptionPane.showMessageDialog(null,"\tCadastro da Empresa");
        
       JOptionPane.showMessageDialog(null,"1. Cadastrar");
       JOptionPane.showMessageDialog(null,"2. Excluir");
       JOptionPane.showMessageDialog(null,"3. Mostrar funcionarios cadastrados");
       JOptionPane.showMessageDialog(null,"4. Mostrar folha de pagamento");
       JOptionPane.showMessageDialog(null,"0. Fim");
       JOptionPane.showInputDialog("Digite uma Opcao:");
    }

    public static void todosFuncionarios(){
        JOptionPane.showMessageDialog(null,"Você entrou no método cadastrar.");
    }
    
    public static void removerRegistro(){
        JOptionPane.showMessageDialog(null,"Você entrou no método Exclir registro.");
    }
    
    public static void Mostra(){
        JOptionPane.showMessageDialog(null,"Você entrou no método Mostrar Funcionario cadastrado.");
    }
    
    public static void folhaDePagamento(){
        JOptionPane.showMessageDialog(null,"Você entrou no método Mostrar folha de pagamento.");
    }

    
   
    public static void main() {
        int opcao;
        Scanner entrada = new Scanner(System.in);
        
        
        do{
            menu();
            opcao = entrada.nextInt();
            
            switch(opcao){
            case 1:
                todosFuncionarios();
                break;
                
            case 2:
                removerRegistro();
                break;
                
            case 3:
                Mostra();
                break;
                
            case 4:
                folhaDePagamento();
                break;
            
            default:
                JOptionPane.showMessageDialog(null,"Opção inválida.");
            }
        } while(opcao != 0);
    }
    */
}  

 

Link para o comentário
Compartilhar em outros sites

Não seria mais simples remover o funcionário e depois retornar o menu?

Se o usuário quiser remover outro funcionário ele escolhe a opção de remover novamente.

 

Mas se você precisa fazer um loop pra essa função específica, apenas execute ela a primeira vez, chame o método de exclusão e pergunte em um JOptionPane se o usuário pretende remover outro funcionário.

 

Nessa hora você entra em loop. Enquanto a resposta for sim, fique exibindo a opção até a lista estar vazia ou o usuário escolher que não quer remover outro funcionário.

Link para o comentário
Compartilhar em outros sites

É bem mais simples do que você imagina.

 

Faça um loop do while com o menu e fique repetindo até o usuário escolher sair

String resposta = "";
do {
  resposta = JOptionPane.showInputDialog(null, "1. Cadastrar\n2. Excluir\n3. Mostrar funcionarios cadastrados\n4. Mostrar folha de pagamento\n0. Fim\n\nDigite uma Opcao");
  
  switch (resposta) {
   
    case "1":
      //método de cadastro;
      break;
    case "2":
      //método de exclusão;
      break;
    case "3":
      //método mostra funcionários;
      break;
    case "4":
      //método mostra forma pagto
      break;
        
  }    
} while (!resposta.equals("0"));

O menu será exibido uma primeira vez. Ao dar a resposta, o switch executa o método referente a opção escolhida. Enquanto não for digitado zero, o menu será exibido a cada método executado. Caso o usuário escolha a opção 0, o loop while será encerrado e nenhum menu será exibido novamente. Daí você pode tratar o que ocorre quando o usuário escolher sair.

Link para o comentário
Compartilhar em outros sites

@TwistedSoul No netebeans deu um erro no } while (!resposta.equals("0"));

adicionado 5 minutos depois

desculpa minha nubisse em java mais eu chamei todos os metodos mais o menu continua nao sendo executado primeiro 

String resposta = "";
        do {
            resposta = JOptionPane.showInputDialog(null, "1. Cadastrar\n2. Excluir\n3. Mostrar funcionarios cadastrados\n4. Mostrar folha de pagamento\n0. Fim\n\nDigite uma Opcao");
  
            switch (resposta) {
                case "1":
                    asus.todosFuncionarios(quant);
                break;
                case "2":
                    asus.removerRegistro(resposta, quant);
                break;
                case "3":
                    asus.todosFuncionarios(quant);
                break;
                case "4":
                    asus.folhaDePagamento(quant);
                break;
            }    
        } while(!resposta.equals("0"));

 

Link para o comentário
Compartilhar em outros sites

O erro ocorre por causa de como o seu código está estruturado. Ele precisa mudar consideravelmente para você executar dessa forma.

 

Por exemplo:

 

Você precisa criar um método na sua model de funcionário que faça o cadastro. No caso, esse método deve instanciar novo objeto Funcionario(), setar as variáveis dele com os valores informados em tela pelo usuário, inserir o objeto criado na sua lista de funcionários e simplesmente encerrar o método.

//Na sua classe principal, existe uma lista com os funcionarios
List<Funcionario> listFunc = new ArrayList<>();

//Execute o exemplo que te passei anteriormente. 
String resposta = "";
        do {
            resposta = JOptionPane.showInputDialog(null, "1. Cadastrar\n2. Excluir\n3. Mostrar funcionarios cadastrados\n4. Mostrar folha de pagamento\n0. Fim\n\nDigite uma Opcao");

            switch (resposta) {
                case "1":
                    listFunc.add(asus.cadastrarFuncionario());
                    break;
                case "2":
//                    asus.removerRegistro(resposta, quant);
                    break;
                case "3":
//                    asus.todosFuncionarios(quant);
                    break;
                case "4":
//                    asus.folhaDePagamento(quant);
                    break;
            }
        } while (!resposta.equals("0"));

Em asus.cadastrarFuncionario(), você faz a leitura dos inputs do usuário, seta os valores em um objeto do tipo Funcionario e retorna esse objeto no método para ser inserido na sua lista.

 

Você não precisa passar a quantidade de usuários a ser cadastrados como parâmetro. Como você tem um menu, o usuário pode escolher quantos ele deseja cadastrar, exibir folha, cadastrar de novo e depois sair.

 

Faça métodos específicos para cada função a ser realizada e não tudo em um único método com chamadas lineares.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

O ruim que nao sei usar arraylist porque ainda nao vi esse assunto ainda na facul :/  

 

menu deixa pra la depois eu faço kkkkk 

 

como eu faria estrutura de repetição para remover novamente eu tentei fazer um while ( true) mais n deu certo como falei no post logo acima, você tem ae algum exemplo que possa fazer junto com aquela função de deseja remover sim ou nao e retornar pedir pro usuario informar o nome a ser removido e depois mostrar a lista atualizada dos funcionario após remover um dos funcionarios ?

Link para o comentário
Compartilhar em outros sites

Cara, siga a seguinte lógica que o código é bem simples de fazer. O problema aqui é apenas a lógica de estruturação das suas chamadas.

 

- Mostrar menu com as opções
- Usuário escolhe a opção de remover usuário
- Perguntar ao usuário o nome do funcionário a ser removido (através de um JOptionPane, por exemplo)
- Capturar a resposta do usuário e iterar sobre o array, buscando funcionário que tenha o nome informado
- Ao achar o funcionário, remover o mesmo do array
- Depois disso, chame um método que itere sobre o array e mostre em tela os funcionário cadastrados

PS.: uma ideia boa seria, ao escolher a opção de remover funcionários, antes de perguntar o nome do mesmo, imprimir em tela a lista de funcionários para que o usuário saiba o que digitar no próximo passo

Eu poderia te dar o código do programa inteiro funcionando, mas daí você realmente não aprenderia. Esqueletos e pseudo-códigos ajudam bastante com isso. Você apenas tem que ter a boa vontade e a persistência de alterar o seu código ou até mesmo refaze-lo por completo até aprender.

 

Mas, vou te dar uma dica que vale ouro nessas horas.

 

Faça seu programa do zero novamente. Ignore o que seu professor pediu e apenas monte um sistema de menu, como o que eu te passei antes. Aquele código funciona normalmente e consegue cobrir todos os passos que você precisa. 

 

Depois disso funcionando e você entendendo como ele funciona, altere o código. Não exiba determinados menus caso seu vetor não tenha sido inicializado com um tamanho pre-definido. Peça ao usuário digitar o tamanho do array, inicialize ele e depois volte ao menu, apresentando todas as opções já que seu vetor agora tem um tamanho (mas vazio).

 

Depois disso, implemente o método de adicionar funcionário. Coloque um contador de quantos funcionários tem cadastrados ou consulte o vetor para não deixar o usuário clicar em cadastrar pela quinta vez quando seu vetor tem apenas um tamanho igual a 4.

 

Faça cada uma das coisas funcionar de forma independente. No final das coisas, você vai perceber que nenhuma das suas funções de adicionar, remover, etc.. depende das outras. Todas elas dependem única e exclusivamente do seu vetor e a única coisa que elas vão ter em comum é iterar e alterar essa estrutura de dados. 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!