Tratamento de Excessao

5 respostas
C

Boa noite.... estou com um codigo aqui que esta me dando dor de cabeca... é um exercicio da faculdade e tenho que inserir o tratamento de erro nele... so que o problema consiste que ele exibe a mensagem mas nao volta a pedir o valor e vai para o próximo requisito....

(ex: numero da casa... ele exibe o erro mas passa direto pro bairro)

private void cadastraFuncionario() {
        nome = verifica.verificaString();
        System.out.println("--- CADASTRO ---\n Nome: ");
        nome = verifica.verificaString();
        System.out.print("Rua: ");
        rua = verifica.verificaString();
        System.out.print("Numero: ");
        numero = verifica.verificaInt();
        System.out.println("Bairro: ");
        bairro = verifica.verificaString();
        cidade = verifica.verificaString();
        System.out.print("Cidade: ");
        cidade = verifica.verificaString();
        System.out.print("CEP: ");
        cep = verifica.verificaString();
        System.out.print("Telefone: ");
        telefone = verifica.verificaInt();
        System.out.print("Salário: ");
        salario = verifica.verificaDouble();
        
        empresa.cadastraFuncionario(nome, rua, numero, bairro, cidade, cep, telefone, salario);
    }
public int verificaInt()
    {
        int inteiro = 0;
        
        do
        {
            try
            {
                inteiro = input.nextInt();
                continua = false;
            }
            catch ( InputMismatchException e )          
            {   
                input.nextLine(); 
                System.out.println("Você precisa inserir números somente. Tente novamente: \n" );
                continua = false;
            }
        } while(continua);   
        return inteiro;
    }

5 Respostas

renzonuccitelli

Tira o continua = false; de dentro do catch que vai funcionar como vc ta querendo…

renzonuccitelli

Outra coisa, se foi exercicio passado na facu blz. Mas do jeito que está a lógica, parece que vc usa o catch para ir pulando a linha na leitura. Isso, na vida real nao se faz, já que para o input já existe o método para verificar se a entrada é um int ou não…
Vai ver por nisso ele já esta passando pro bairro, pq vc pula uma linha no bloco catch…

C

oh meu deus!!! como eu não vi isso!!!

muitíssimo obrigado…

não sei como essa linha foi parar ai…

que falta de atenção!!!

C

como assim ir pulando a linha de leitura?

renzonuccitelli

Esse input não ta lendo de um arquivo?

Criado 28 de outubro de 2008
Ultima resposta 28 de out. de 2008
Respostas 5
Participantes 2