Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: pupyrepetto@gmail.com en 25 de Abril 2020, 07:26

Título: Java código programa apuestas 4 cifras capaz identificar aciertos a 1 cifra paga
Publicado por: pupyrepetto@gmail.com en 25 de Abril 2020, 07:26
Hola comunidad! Soy nuevo en esto y estoy teniendo problemas para resolver algo. Lo que pretendo programar es un metodo que me resuelva lo siguiente:

tengo un numero "Apuesta" de 4 cifras 1-2-3-4

tengo un numero "PrimerPremio" de 4 cifras XXXX

no logro que el programa me diga que tengo aciertos a 1 cifra.

Y tampoco logro que cuando ingreso un numero de solo 2 cifras en Apuesta no me rellene de ceros los 2 lugares vacios (centena y unidad de mil).


Código: [Seleccionar]
import java.util.Scanner;

public class BuscarAciertos {

public BuscarAciertos() {

Scanner teclear = new Scanner(System.in);
System.out.print("Ingrese numero apostado (hasta 4 cifras): \n" );
        numero = teclear.nextInt();
   
     
       if (numero<10000 && numero>999){
       
    XXXX=true;
    XXX=true;
    XX=true;
    X=true;
        cuarto = numero%10;

        numero = numero/10;
        tercero = numero%10;

        numero = numero/10;
        segundo = numero%10;


        numero = numero/10;
        primero = numero%10;
       
        System.out.printf("Los numeros separados son:");
        System.out.printf("%d  %d  %d  %d   \n", primero, segundo, tercero, cuarto);
       
       } else if (numero<1000 && numero>99) {
       
       XXXX=false;
    XXX=true;
    XX=true;
    X=true;
       
       tercero = numero%10;
       
           numero = numero/10;
           segundo = numero%10;
   

           numero = numero/10;
           primero = numero%10;
         
           System.out.printf("Los numeros separados son:");
           System.out.printf("%d  %d  %d \n", primero, segundo, tercero);
           
       }else if (numero<100 && numero>10){
     
       XXXX=false;
    XXX=false;
    XX=true;
    X=true;
   
       segundo = numero%10;
   
           numero = numero/10;
           primero = numero%10;
         
           System.out.printf("Los numeros separados son:");
           System.out.printf("%d  %d   \n", primero, segundo);
       
       }else if (numero<10 && numero>0){
       
       XXXX=false;
    XXX=false;
    XX=false;
    X=true;
     
       primero = numero%10;
       
       System.out.printf("Los numeros separados son:");
           System.out.printf("%d    \n", primero);
       }
       

       //SEPARAMOS LA CABEZA EN 4
       
       System.out.print("Escribe el numero GANADOR !!: \n" );
        int cabeza=teclear.nextInt();
       
        if (cabeza<10000 && cabeza>999){
            cuartoC = cabeza%10;

            cabeza = cabeza/10;
            terceroC = cabeza%10;

            cabeza = cabeza/10;
            segundoC = cabeza%10;
     

            cabeza = cabeza/10;
            primeroC = cabeza%10;
           
            System.out.printf("Los numeros separados son:");
            System.out.printf("%d  %d  %d  %d   \n", primeroC, segundoC, terceroC, cuartoC);
       
        }else if (cabeza<1000 && cabeza>99) {
         
         terceroC = cabeza%10;

        cabeza = cabeza/10;
            segundoC = cabeza%10;
     

            cabeza = cabeza/10;
            primeroC = cabeza%10;
           
            System.out.printf("Los numeros separados son:");
            System.out.printf("%d  %d  %d \n", primeroC, segundoC, terceroC);
           
        }else if (cabeza<100 && cabeza>10){
         
         segundoC = cabeza%10;
         
        cabeza = cabeza/10;
            primeroC = cabeza%10;
           
            System.out.printf("Los numeros separados son:");
            System.out.printf("%d  %d   \n", primeroC, segundoC);
         
        }else if (cabeza<10 && cabeza>0){
         
         primeroC = cabeza%10;
         
         System.out.printf("Los numeros separados son:");
            System.out.printf("%d    \n", primeroC);
           
       
        } 
       
       
       
       if ( cuarto==cuartoC && tercero==terceroC && segundo==segundoC && primero==primeroC ){
       
        System.out.println("Felicitaciones acertaste las 4 cifras");
       
        }else if ( XXXX=false && cuarto==cuartoC && tercero==terceroC && segundo==segundoC && primero!=primeroC ){
       
        System.out.println(" acertaste las 3 cifras");

        }else if (XXX=false && cuarto==cuartoC && tercero==terceroC && segundo!=segundoC ){
       
        System.out.println("acertaste las 2 cifras");
       

        }else if (XX=false && cuarto==cuartoC && tercero!=terceroC){
       
        System.out.println(" acertaste solo 1 cifra");

        } else {
        System.out.println(" SIN ACIERTOS.");
       
        }

}

private int jugada;
private int numero;
     boolean XXXX=false;
     boolean XXX=false;
     boolean XX=false;
     boolean X=false;
private  int cuarto;
private  int tercero;
private  int segundo;
private  int primero;
private  int cuartoC;
private  int terceroC;
private  int segundoC;
private  int primeroC;
       
}

Título: Re:JAVA pagar aciertos 1 cifra
Publicado por: Kabuto en 25 de Abril 2020, 13:06
Deberías intentar hacerlo usando String y no int.

Tenemos la tendencia a que cuando trabajamos con números, pensamos que lo correcto es escoger un tipo de dato numérico como int.
Pero solo deberíamos hacerlo cuando necesitemos hacer operaciones aritméticas con esos números: sumar, restar, dividir, contar, acumular, potenciar,...

Para casos como números de teléfono, números DNI/cédula, códigos postales, placas de vehículos..., números de lotería..., etc...
Es mejor usar String.
Sobre todo si vamos a necesitar comparar los caracteres que componen ese número por separado, sustituirlos, añadirlos... y cosas así, va a resultar mucho más fácil con la clase String que no con int/Integer.


Si no quieres usar String, otra opción es usar un array de 4 int, aunque esto te obligaría a pedir los 4 números de apuesta por separado.

Trabajar directamente con un int te va a obligar a usar mucho código y romperte la cabeza.
Y además NUNCA vas a conseguir que por ejemplo 45 te lo transforme en 0045... porque son exactamente el mismo número y aritméticamente los 0 a la izquierda no tienen ningún valor.
Un int no guarda caracteres, guarda un valor aritmético.
Si quieres que un 45 tenga 4 caracteres complementando con ceros a la izquierda, tendrás que usa un String o un array.

Inténtalo, si necesitas más ayuda porque no conoces bien la clase String y sus numerosos métodos, dilo y te ayudamos en lo que sea.

Título: Re:JAVA pagar aciertos 1 cifra
Publicado por: pupyrepetto@gmail.com en 25 de Abril 2020, 17:44
Gracias Kabuto.... es verdad !!!! empece todo esto pensando en Int y nunca pare a pensar que podria usar String !!! 


Gracias.... soy nuevo y me cuesta ver la Matrix aun. jajaja

voy a intentar con String.
Título: Re:JAVA pagar aciertos 1 cifra
Publicado por: pupyrepetto@gmail.com en 25 de Abril 2020, 21:18
pero la pucha, semanas pensando la manera de hacerlo con INT y ahora en un ratito lo tengo terminado pasando todo a String.

Gracias genio!!!!