Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Elyton Moreira

Como fazer um loop para deletar novamente

Recommended Posts

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();//
            }    
        }
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

É porque não vi como tá o resto do seu código, mas uma opção é utilizar uma janela JavaScript com a opção sim ou não, 
aí caso ta pessoa clique em sim ele redirecionava pra página que dava a opção de apagar algum registro.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • 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);
        }
        */
    }  

     

    Compartilhar este post


    Link para o post
    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.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @TwistedSoul

    o ruim que tentei fazer isso mais ele aparece um erro quando tento remover novamente, e sobre menu nao conseguir cria lo chamando cada função 

    Compartilhar este post


    Link para o post
    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.

    Editado por TwistedSoul

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • @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"));

     

    Compartilhar este post


    Link para o post
    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.

    Editado por TwistedSoul
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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 ?

    Editado por Elyton Moreira

    Compartilhar este post


    Link para o post
    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    4 horas atrás, Elyton Moreira disse:

    valeu mano 

    As ordens. Precisando novamente, só perguntar.

     

    Boa sorte no desenvolvimento.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×