Ajuda com erro: java.lang.ArithmeticException: / by zero

Nesse codigo para percorrer uma matriz 49x49 (que pode não estar totalmente preenchida), e calcular medias, da erro de exceção: java.lang.ArithmeticException: / by zero

Como trato este problema?

public void imprimirresultado()
    {
        int mulherdoente=0;
        int mulhersadia=0;
        int totalmulher=0;
        int homemdoente=0;
        int homemsadio=0;
        int totalhomem=0;
        int mediaMsadia=0;
        int mediaMinfect=0;
        int mediaHsadio=0;
        int mediaHinfect=0;
        int mediaPsadias=0;
        int mediaPinfect=0;
        
        for (int l=0; l<mat.length ; l++)
            {
                for (int c=0; c<mat.length ; c++)
                {

                    if ( (mat[l][c]!=null) && (mat[l][c].getSexo()=='f')  )
                    { 
                        if (mat[l][c].getDoente()==true)
                        {
                            mulherdoente+=1;
                            totalmulher+=1;
                        }
                        else if (mat[l][c].getDoente()==false)
                        {
                            mulhersadia+=1;
                            totalmulher+=1;
                        }
                    }
                    if ( (mat[l][c]!=null) && (mat[l][c].getSexo()=='m') )
                    { 
                        if (mat[l][c].getDoente()==true)
                        {
                            homemdoente+=1; 
                            totalhomem+=1;
                        }
                        else if (mat[l][c].getDoente()==false)
                        {
                            homemsadio+=1;
                            totalhomem+=1;
                        }
                    }
                }
            }
            
            mediaMsadia= ((mulhersadia/totalmulher)*100);
            mediaMinfect= ((mulherdoente/totalmulher)*100);
            mediaHsadio=  ((homemsadio/totalhomem)*100);  
            mediaHinfect= ((homemdoente/totalhomem)*100);
            mediaPsadias= ((mulhersadia+homemsadio)/(totalmulher+totalhomem)*100);
            mediaPinfect=((mulherdoente+homemdoente)/(totalmulher+totalhomem)*100);
            
            System.out.println 
  • o System.out.println eu tirei ai pq era muito grande, mas basicamente mostra todas as variaveis de media

valeu

1 curtida

alguma variavel totalXXX está com o valor 0. qnd se divide algo pelo int 0 da essa exceção. vc pode evitar essa exceção de 3 formas:

1 - declarando os totalXXX como double. pq dividir por 0.0 não da erro mas fica um numero inconstante.

2 - colocando dentro de um try-catch para tratar a exceção.

3 - ou ver pq tá dando 0, e se é p dar mesmo esse valor.

É, realmente num era para dar, pq colquei uma pessoa(objeto) de cada tipo, ou seja, cada total tinha de ter pelo menos 1. Vou olhar o codigo aqui para ver.

Se eu botar como Double e dividr por zero, vai dar NaN (not a number) é?

E qual o jeito de tratar essa exceção (divisão por zero) ?? Seria com try né? mas como? Desculpa ai, mas que ainda sou novato em Java. :smiley:

Consegui “resolver” colocando IFs para so dividir se o denominador for maior q zero.

Contudo, ta dando sempre zero, vou rever meu codigo para ver.

Valeu ae. :slight_smile:

Você não está percorrendo a matriz e sim usando um for dentro do outro que faz a mesma coisa.

O certo seria

for ( int l = 0; l < mat.length; l++ ) { for( int c = 0; c < mat[ l ].length; c++ ) { } }

Falow!

mas a o codigo tem q ficar dentro do 2º for n? Como vc mostrou o 2º for é aberto e logo fechado(assim ele so vai passar me uma coluna)?? num entendi o que vc quiz dizer

O que eu percebi utilizando debugger, é que durante o metodo de passagem de tempo, a matriz ta la,certinha, com o sobjetos que inserir dentro dela. Porem quando vou exectuar o metodo Imprimirresultado() que percorre a matriz para imprimir o q achou, a matriz esta zerada.

O que pode estar causando este zeramento da matriz???