Autor Tema: Java código programa apuestas 4 cifras capaz identificar aciertos a 1 cifra paga  (Leído 877 veces)

pupyrepetto@gmail.com

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
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;
       
}

« Última modificación: 25 de Octubre 2020, 20:55 por Alex Rodríguez »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 725
    • Ver Perfil
Re:JAVA pagar aciertos 1 cifra
« Respuesta #1 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.

NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

pupyrepetto@gmail.com

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:JAVA pagar aciertos 1 cifra
« Respuesta #2 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.

pupyrepetto@gmail.com

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:JAVA pagar aciertos 1 cifra
« Respuesta #3 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!!!!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".