[Resolvido]Divisao por 0 Fazer Validação

6 respostas
gusthavosouza

Boa noite galera to com uma duvida,
to fazendo uma calculadora e ja fiz todas as validaçoes ta tudo funcioando
mas a seguinte Duvisa surgiu tem como Refatorar ela pra eu Fazer um Metodo
validacao () {
if ( y <= 0) ........

e ir implementando nos metodos abaixo ? olha o codigo ae
import javax.swing.JOptionPane;

public class Divisao {
public void validaçao() {
}

    public long divisao(long x, long y) {
        if (y &lt;= 0) {

            JOptionPane.showMessageDialog(null, &quot;Divisao Invalida&quot;);
            System.exit(0);
            return 0;
        }
        return x / y;
    }

    public double divisao(double x, double y) {
        if (y &lt;= 0) {
            JOptionPane.showMessageDialog(null, &quot;Divisao Invalida&quot;);
            System.exit(0);
            return 0;
        }
        return x / y;
    }

    public float divisao(float x, float y) {
        if (y &lt;= 0) {
            JOptionPane.showMessageDialog(null, &quot;Divisao Invalida&quot;);
            System.exit(0);
            return 0;
        }
        return x / y;
    }
}

Obrigado,

public long validacao () {
		if (y &lt;=0 ) {
			
			JOptionPane.showMessageDialog(null, &quot;Divisao invalida&quot;);
		return 0;
	}
queria fazer uma validação so e implmentar
public float divisao(float x, float y)
 {
validacao();
return x / y;
}

Se e que me intendem,
se eu faço a validaçaõ desse jeito e implemento nos metodos ,
toda vez qe eu vou fazer uma operação valida ela da as menssagens de erro,
e se tiver outra operaçao ela da o resultado e a menssagem de erro
Abçs

6 Respostas

jyoshiriro

Olá.

Amigo, primeira coisa a observar é que não se deve impedir divisão por número MENOR OU IGUAL a Zero e sim apenas IGUAL a Zero. Divisão por números menores que Zero são perfeitamente possíveis.

Agora, como essa validação deve se comportar vai depender de como você fez nos outro métodos (adição, subtração e multiplicação).

gusthavosouza

Sim entendi mas o qUE eu não to conseguindo fazer e
Que quando eu crio um método de validação e implemento nos outros métodos
Mesmo qUE eu faça uma operação válida ele aparece a tela de erros.
E depois imprime o resultado.
Isso que não to entendo ao fazer RS.
Abçs obrigado

S

Dá pra fazer assim:

public static boolean validaDivisor(long num){
     if(num == 0){
          JOptionPane.showMessageDialog(null, "Divisor é Zero!");
          return false;
     } else {
          return true;
     }
}

public float divisao(float x, float y)
{  
     //Para tipos diferentes de long precisará de cast
     return validaDivisor((long) y) ? (x / y) : 0;
}
douglaskd

sera que usar um try cath pegando ArithmeticException seria uma boa prática ?

ou até mesmo criar uma classe que extendesse ArithmeticException ?

o que acha ?

S

douglaskd:
sera que usar um try cath pegando ArithmeticException seria uma boa prática ?

ou até mesmo criar uma classe que extendesse ArithmeticException ?

o que acha ?

Bem lembrado… é uma boa também.

gusthavosouza

Vou testar quando chegar em casa.
RS brigado pela aJudá assim qe eu terminar posto o resultado
Obrigado novamente

Criado 5 de novembro de 2012
Ultima resposta 6 de nov. de 2012
Respostas 6
Participantes 4