1
resposta

[Minha Solução] Divisão try/catch

Desafio1. Crie um programa simples que solicita dois números ao usuário e realiza a divisão do primeiro pelo segundo. Utilize o bloco try/catch para tratar a exceção que pode ocorrer caso o usuário informe 0 como divisor.


public interface Operador {

    void dividir(int num1, int num2, double resultado);
}

import java.util.Scanner;

import static java.lang.System.exit;

public class Calculadora implements Operador{
    private int num1;
    private int num2;
    private double resultado;

    //Construtor
    public Calculadora(int num1, int num2, double resultado) {
        this.num1 = num1;
        this.num2 = num2;
        this.resultado = resultado;
    }
    //Instanciando novo objeto Scanner
    Scanner sc = new Scanner(System.in);

    //Método entrada de dados
    public void entrarDados() {
        System.out.println("""
                *******************************
                Welcome to Ultimate Calculator
                *******************************
                """);
        int opcao = 1;
        do {
            System.out.println("Insira o primeiro numero inteiro: ");
            this.setNum1(sc.nextInt());
            System.out.println("Insira o segundo numero inteiro: ");
            this.setNum2(sc.nextInt());

            dividir(getNum1(), getNum2(), getResultado());

            System.out.println("""
                \nDeseja Realizar nova operação Matemática?
                1 - SIM
                2 - NÃO
                """);
            int selecao = sc.nextInt();
            if (selecao == 2) {
                System.out.println("Saindo do programa... até mais!");
                exit(0);
            } else {
                continue;
            }
        } while (opcao == 1);
    }

    //Sobrecarga dos métodos de implementação obrigatória da Interface
    public void dividir(int num1, int num2, double resultado) {
        try {
            this.setResultado(this.getNum1() / this.getNum2());
            System.out.println("**************************************");
            System.out.println("O valor da divisão entre: " + this.getNum1() + " / " + this.getNum2() +
                                " é: " + this.getResultado());
            System.out.println("**************************************");
        }
        //Se executar operação divisão numero por zero. é lançado o ArithmeticException
        //é realizada a trativa do erro para que o programa não pare a execução.
        catch (ArithmeticException ae) {
            System.out.println("************");
            System.out.println(num1 + " " + ae.getMessage());
            System.out.println("***************************************************************");
            System.out.println("Você tentou dividir por zero (não é possível). Tente novamente!");
            System.out.println("***************************************************************");
        }
    }

    //getters e setters
    public int getNum1() {
        return num1;
    }

    public void setNum1(int num1) {
        this.num1 = num1;
    }

    public int getNum2() {
        return num2;
    }

    public void setNum2(int num2) {
        this.num2 = num2;
    }

    public double getResultado() {
        return resultado;
    }

    public void setResultado(double resultado) {
        this.resultado = resultado;
    }
}

public class Principal {
    public static void main(String[] args) {
        Calculadora calc = new Calculadora(0,0,0);
        calc.entrarDados();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Carlos. Tudo bem?

Obrigado por compartilhar seu código aqui com a gente.

Achei interessante como você utilizou try/catch para tratar a divisão por zero. A implementação ficou clara e funcional. Porém, uma sugestão seria utilizar o método nextLine() após as entradas do Scanner, evitando possíveis erros de leitura causados por buffer residual. Além disso, uma curiosidade: em operações de divisão, é possível melhorar a precisão usando double desde o início, o que elimina a necessidade de conversões adicionais.

Veja este exemplo:

import java.util.Scanner;

public class NovaCalculadora {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Informe o dividendo: ");
        double num1 = sc.nextDouble();
        System.out.print("Informe o divisor: ");
        double num2 = sc.nextDouble();

        try {
            double resultado = num1 / num2;
            System.out.println("Resultado: " + resultado);
        } catch (ArithmeticException e) {
            System.out.println("Erro: " + e.getMessage());
        }
    }
}

Esse exemplo realiza a divisão com double para garantir maior precisão. A ideia é simplificar a leitura e evitar conversões desnecessárias.

Conte com o apoio do Fórum. Abraços e bons estudos.