Fácil Java
Tratando divisão por zero
Enunciado
Escreva um programa que leia dois números inteiros e realize a divisão do primeiro pelo segundo. Use try/catch para tratar a exceção ArithmeticException caso o divisor seja zero. Exiba o resultado ou uma mensagem de erro.
Requisitos
- O programa deve usar
try/catchpara capturarArithmeticException. - Se o divisor for zero, exiba exatamente
Erro: divisão por zero. - Se a divisão for válida, exiba o resultado no formato
Resultado: X.
Código inicial
import java.util.Scanner;
public class DivisaoSegura {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
// TODO: realize a divisão e trate a exceção
sc.close();
}
}
Saída esperada
Resultado: 5
Erro: divisão por zero
Ver dica
Use o método nextInt() do Scanner para ler os números. Coloque a divisão dentro de um bloco try e capture ArithmeticException no catch.
Mostrar solução
import java.util.Scanner;
public class DivisaoSegura {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
try {
int resultado = a / b;
System.out.println("Resultado: " + resultado);
} catch (ArithmeticException e) {
System.out.println("Erro: divisão por zero");
}
sc.close();
}
}
Passo a passo
- Importamos
Scannerpara ler a entrada do usuário. - Criamos um objeto
Scannerpara ler da entrada padrão. - Lemos dois números inteiros
aeb. - Dentro do bloco
try, realizamos a divisãoa / b. - Se
bfor zero, a JVM lançaArithmeticException. - O bloco
catchcaptura essa exceção e exibe a mensagem de erro. - Se não houver exceção, o resultado é impresso normalmente.
- Fechamos o
Scanner.
Por que funciona
O try delimita o código que pode lançar exceção. Quando b == 0, a divisão inteira lança ArithmeticException, que é uma exceção unchecked (herda de RuntimeException). O catch captura especificamente essa exceção e trata o erro de forma controlada, evitando que o programa encerre abruptamente.
Erros comuns
- Não capturar a exceção correta: usar
catch (Exception e)funciona, mas é genérico demais. Prefira capturarArithmeticException. - Esquecer de fechar o
Scanner: não causa erro, mas é boa prática liberar recursos. - Dividir por zero sem tratamento: o programa lançaria
ArithmeticExceptione encerraria com stack trace.
Outra forma de resolver
Você pode verificar antes de dividir:
if (b == 0) {
System.out.println("Erro: divisão por zero");
} else {
System.out.println("Resultado: " + (a / b));
}
Essa abordagem evita exceções, mas nem sempre é possível prever todos os erros.
Saída esperada
Resultado: 5
Erro: divisão por zero