Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Exercícios 1 e 2

Exercicio 1

import java.util.Scanner;
        public class TestandoDivisor {
            static int  divisao (int n1, int n2) {
                if ( n1 == 0 || n2 == 0) {
                    throw new ErroDeDivisorException("ERRO!\nVocê não pode digitar o valor 0 " +
                            "como divisor! ");
                }

            return n1 / n2;
        }

        public static void main(String[] args) {
            int num1;
            int num2;
            int resultado;

            Scanner sc = new Scanner(System.in);

            try {
                System.out.println("Digite o primeiro numero: ");
                num1 = sc.nextInt();
                System.out.println("Digite o segundo numero: ");
                num2 = sc.nextInt();
                System.out.println("\n" + num1 + "/" + num2);
                resultado = divisao(num1, num2);
                System.out.println("\n\nO resultado da divisao é " + resultado);
            } catch (ErroDeDivisorException e){
                System.out.println(e.getMessage());
            }
        }
    }

    ============================================

    public class ErroDeDivisorException extends RuntimeException{
        private String mensagem;

        public ErroDeDivisorException(String mensagem){
            this.mensagem = mensagem;
        }

        public String getMessage() {
            return mensagem;
        }
    }

    *****************************************************************

Exercício 2 ->

    import java.util.Scanner;

    public class LerSenha {

        static boolean testarSenha(int senha, int teste) {
            if (senha == teste){
                System.out.println("SENHA CORRETA!\n\n\tSeja bem vindo\n************************");
                return true;
        }else
                throw new SenhaInvalidaException("SENHA INCORRETA! \nTente novamente!\n\n");
        }

        public static void main(String[] args) {
            int senhaReal = 110405;
            int senhaTeste;
            boolean resultado = false;

            Scanner sc = new Scanner(System.in);

            while (!resultado) {
                try {
                    System.out.println("SENHA DE ACESSO: ");
                    senhaTeste = sc.nextInt();
                    System.out.println("Senha Digita: " + senhaTeste);
                    resultado = testarSenha(senhaReal, senhaTeste);
                } catch (SenhaInvalidaException e) {
                    System.out.println(e.getMessage());
                }
            }

        }
    }

    ============================================

    public class SenhaInvalidaException extends RuntimeException{
        private String mensagem;

        public SenhaInvalidaException(String mensagem){
            this.mensagem = mensagem;
        }

        public String getMessage() {
            return mensagem;
        }
    }
1 resposta

Oi, Gustavo. Tudo bem?

Seu exercício mostra uma boa aplicação de exceções personalizadas, principalmente ao separar a regra de validação da lógica do main. No exercício 1, a divisão está funcionando e o catch trata especificamente a ErroDeDivisorException, exibindo a mensagem definida na própria exceção.

Um ponto que merece atenção é a condição if (n1 == 0 || n2 == 0). Pela proposta da atividade, somente o segundo número, que é o divisor, precisa ser impedido de receber 0. Com a condição atual, 0 / 5 também gera exceção, embora essa divisão seja matematicamente válida. Nesse caso, bastaria validar n2 == 0.

Parabéns pelo trabalho, Gustavo. Continue compartilhando seus exercícios no fórum. Estamos à disposição para acompanhar sua evolução.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!