Error: can not be divided by zero

0

The problem is that I get an error when I try it several times. The error I get is that it can not be divided by zero and it happens in this line:

numeroAdvAA = (numeroAdvAux / divisionDigito) % 10;

This is the part of the code where I receive the error:

public static void main(String[] args) {
    //Entorno:

    int numeroAdivinar;
    int numeroSecreto;
    int numeroAdvAux;
    int numeroSeAux;
    byte contador;
    byte contadorDigito = 0;
    int cifrasAdivinar = 0;
    boolean ganador = false;
    int numeroAdvAA;
    int numeroSeAA;
    int divisionDigito = 10;
    int divisionDigitoAux;
    int contadorDigitoAux = 0;
    int divisionDigitoSec = 10;
    int divisionDigitoSecAux=0;
    //Algoritmo:   
    System.out.println("Turno del Primer Jugador");
    do {
        System.out.println("Introduzca un numero por teclado");
        numeroAdivinar = Leer.datoInt();
    } while (numeroAdivinar <= 0);
    contador = 0;
    numeroAdvAux = numeroAdivinar;
    //Contador de digito
    while (numeroAdvAux != 0) {
        numeroAdvAux = numeroAdvAux / 10;
        contadorDigito++;
    }
    //Para fabricar la division
    for (int i = 0; i < contadorDigito - 1; i++) {
        divisionDigito *= 10;
    }

    divisionDigitoAux = divisionDigito;
    System.out.println("Turno del Segundo Jugador");
    do {
        do {
            System.out.println("Introduzca el segundo numero");
            numeroSecreto = Leer.datoInt();
        } while (numeroSecreto <= 0);
        numeroSeAux = numeroSecreto;
        //Contador de digito
        while (numeroSeAux != 0) {
            numeroSeAux = numeroSeAux/10;
            contadorDigitoAux++;
        }
        //Para fabricar la division
        for (int i = 0; i < contadorDigitoAux - 1; i++) {
            divisionDigitoSec *= 10;
        }

        numeroAdvAux = numeroAdivinar;
        numeroSeAux = numeroSecreto;
        if (numeroAdvAux == numeroSeAux) {

            ganador = true;

        } else {
            divisionDigito = divisionDigitoAux;
            divisionDigitoSecAux=divisionDigitoSec;
            for (int i = 0; i < contadorDigito; i++) {
                divisionDigito = divisionDigito / 10;
                divisionDigitoSecAux=divisionDigitoSecAux/10;
                numeroAdvAA = (numeroAdvAux / divisionDigito) % 10;
                numeroSeAA = (numeroSeAux / divisionDigitoSec) % 10;//Este division digito no es igual al de arriba port eso no lo compara igual debemos hacer otro para este

                if (numeroAdvAA == numeroSeAA) {
                    cifrasAdivinar += 1;
                }

            }
            System.out.println("Has introducido un total de: " + cifrasAdivinar + " digitos bien colocados");
            cifrasAdivinar = 0;

        }

        contador = (byte) (contador + 1);
    } while (contador != 10 && ganador != true);
    if (ganador) {
        System.out.println("Has acertado todas las cifras");

    } else {
        System.out.println("Se te acabaron las oportunidades ");
    }
}
    
asked by user7407723 14.06.2017 в 11:37
source

1 answer

2

Division digit is a int so in this function divisionDigito = divisionDigito / 10; if divisionDigit is less than 10 will result in 0, n , but being a variable of type int , if you have decimals the value is truncated and 0 is left. You have to control which digit division is not less than 10 never or do it double :

double divisionDigito = 10;
    
answered by 14.06.2017 в 11:55