Estou fazendo um exercício q foi pedido em minha prova na faculdade …
O usuario vai digitar dois valores, e irá mandar p ele as quatro operações matemáticas, e devo colocar uma exceção qdo o segundo valor for 0 para a divisão …
Esse programa foi feito em três classes para poder exercitar herança e entitulados de BaseCalculadora,Calculadora e PrincipalCalculadora …
A minha dúvida é onde devo colocar a exceção pq ele está rodando direitinho mas naum consigo tratar a exceção …
Aki vai as classes sem exceção para q alguém possa ajudar a saber qual o local certo.
package pct_source;
public class BaseCalculadora {
protected float adicao;
protected float subtracao;
protected float divisao;
protected float multiplicacao;
public BaseCalculadora(float a, float b){
adicao = a + b;
subtracao = a - b;
divisao = a / b;
multiplicacao = a * b;
}
public float getAdicao() {
return adicao;
}
public float getSubtracao() {
return subtracao;
}
package pct_source;
public class Calculadora extends BaseCalculadora {
public Calculadora (float a, float b){
super (a,b);
}
public void setAdicao(float a, float b){
adicao = a + b;
}
public void setSubtracao(float a, float b){
subtracao = a - b;
}
public void setMultiplicacao(float a, float b){
multiplicacao = a * b;
}
public void setDivisao(float a, float b){
divisao = a / b;
}
}
package pct_source;
import java.util.Scanner;
public class PrincipalCalculadora {
public static void main(String[] args) {
float a ,b ;
Scanner leteclado = new Scanner(System.in);
System.out.println("Digite o 1º Valor.: ");
a = leteclado.nextFloat();
System.out.println("Digite o 2º Valor.: ");
b = leteclado.nextFloat();
Calculadora c1 = new Calculadora (a,b);
System.out.println("Adição.:"+c1.getAdicao());
System.out.println("Subtração.:"+c1.getSubtracao());
System.out.println("Multiplicação.:"+c1.getMultiplicacao());
System.out.println("Divisão.:"+c1.getDivisao());
}
}
Desde já agradeço a ajuda …
A exception de divisão por zero é lançada em runtime, eu trataria quando vc chama a divisão, colocando a chamada do método entre try/catch
Tentei deixa assim …
package pct_source;
import java.util.Scanner;
public class PrincipalCalculadora {
public static void main(String[] args) {
Scanner leteclado = new Scanner(System.in);
System.out.println("Digite o 1º Valor.: ");
float a = leteclado.nextFloat();
System.out.println("Digite o 2º Valor.: ");
float b = leteclado.nextFloat();
Calculadora c1 = new Calculadora (a,b);
System.out.println("Adição.:"+c1.getAdicao());
System.out.println("Subtração.:"+c1.getSubtracao());
System.out.println("Multiplicação.:"+c1.getMultiplicacao());
try{
System.out.println("Divisão.:"+c1.getDivisao());
}catch(ArithmeticException e){
System.out.println("Naum é possível efetuar divisão por 0.");
}
}
}
Mas qdo digito ex: A=6 b=0 aparece assim …
Adição.:6.0
Subtração.:6.0
Multiplicação.:0.0
Divisão.:Infinity ----> Aki eu queria q aparece "Naum é possível efetuar divisão por 0.
Como nosso colega disse, vc deve usar o try e catch na linha onde pode conter o erro, ao meu ver ficaria assim:
public BaseCalculadora(float a, float b){
adicao = a + b;
subtracao = a - b;
multiplicacao = a * b;
try { //tenta uma operação que pode gerar erro
divisao = a / b;
}
catch (Exception e) { //se o erro for gerado
e.printStackTrace();
}
}
Espero ter ajudado.
Divisão por zero é o tipo de erro que você não deveria pegar com um try…catch. Não é a toa que ele é uma runtime exception. Simplesmente valide a entrada com um if ou um while simples:
[code]package pct_source;
import java.util.Scanner;
public class PrincipalCalculadora {
public static void main(String[] args) {
Scanner leteclado = new Scanner(System.in);
System.out.println("Digite o 1º Valor.: ");
float a = leteclado.nextFloat();
float b = 0;
while (b == 0) {
System.out.println("Digite o 2º Valor.: ");
b = leteclado.nextFloat();
}
Calculadora c1 = new Calculadora (a,b);
System.out.println("Adição.:"+c1.getAdicao());
System.out.println("Subtração.:"+c1.getSubtracao());
System.out.println("Multiplicação.:"+c1.getMultiplicacao());
System.out.println("Divisão.:"+c1.getDivisao());
}
}
[/code]
Outra dica, sempre declare as variáveis o mais próximo possível de onde for usa-las, no menor escopo possível.
Ok muito obg e desculpa a demora por responder …
Ficou muito mais claro agora
Abraxxx