lunes, 28 de noviembre de 2016

Programa de Lotería en Java.

El programa que voy a compartir hoy es un programa que nos dice cuántas veces ha sido premiado un  número de lotería que hemos indicado previamente, en el número de sorteos que indiquemos.
El programa contiene las siguientes características:

  • Convierte tanto el número del cupón comprado como los números ganadores en números de 5 dígitos, poniendo ceros a la izquierda en caso de que sea necesario.
  • Imprime qué número ha sido premiado y qué premio ha sido, si última cifra, dos últimas...
  • Imprime cuántas veces ha salido un número premiado con la última cifra, con las dos últimas cifras, con las tres últimas cifras, las cuatro últimas cifras y cuántas con el premio gordo
Para la realización del programa se han utilizado las siguientes clases:
  • La clase Scanner para la introducción por teclado tanto del número que deseemos comprar como para indicar cuántos sorteos queremos que se realicen.
  • La clase Formatter para poder dar formato de 5 dígitos a los números y añadir los ceros a la izquierda que sean necesarios en cada caso.
Veamos el programa:
import java.util.Formatter;
import java.util.Scanner;

class Cupon {
    private int diasCupon;
    private int cuponComprado;
    private int ultimaCifra = 0;
    private int dosUltimasCifras = 0;
    private int tresUltimasCifras = 0;
    private int cuatroUltimasCifras = 0;
    private int premiosGordos = 0;
    private int numeroPremiado;
    //Métodos    
    public int getUltimaCifra(){
        return ultimaCifra;
    }
    
    public int getDosUltimasCifras(){
        return dosUltimasCifras;
    }
    
    public int getTresUltimasCifras(){
        return tresUltimasCifras;
    }
    
    public int getCuatroUltimasCifras(){
        return cuatroUltimasCifras;
    }
    
    public int getPremiosGordos(){
        return premiosGordos;
    }
       
    //Método que establece el número premiado
    public void setNumeroPremiado(){
        numeroPremiado = (int) (Math.random()*99999+1);
        
    }
    
    public int obtenerNumeroPremiado(){
        return numeroPremiado;
    }
    
    public void setCuponComprado(int cuponComprado){
        this.cuponComprado = cuponComprado;
    }
    
    public int getCuponComprado(){
        return cuponComprado;
    }
    
    public void setDiasCupon(int diasCupon){
        this.diasCupon = diasCupon;
    }
    
    public int getDiasCupon(){
        return diasCupon;
    }
    //Método que pasa a números de 5 dígitos el numero comprado
    //y el número premiado y muestra por pantalla cuantos
    //premios de cata categoría tiene.
    public void premios(){
        Formatter fmt = new Formatter();
        Formatter fma = new Formatter();
        
        String numComprado = String.valueOf(fma.format("%05d", cuponComprado));
        String numPremiado = String.valueOf(fmt.format("%05d", numeroPremiado));
        
        
        //Ultima cifra
        if(numPremiado.substring(4).equals(numComprado.substring(4)) &&
                !numPremiado.substring(3).equals(numComprado.substring(3))){
            ultimaCifra++;
            System.out.println("El cupon comprado " + getCuponComprado() +
                    " tiene el reintegro del número premiado: " + obtenerNumeroPremiado());
        }
        
        //Dos ultimas cifras
        if(numPremiado.substring(4).equals( numComprado.substring(4)) && 
                numPremiado.substring(3).equals(numComprado.substring(3)) &&
                !numPremiado.substring(2).equals(numComprado.substring(2))){
            dosUltimasCifras++;
            System.out.println("El cupon comprado " + getCuponComprado() +
                    " tiene las 2 últimas cifras del número premiado: " + obtenerNumeroPremiado());
        }
        
        //Tres ultimas cifras
        if(numPremiado.substring(4).equals( numComprado.substring(4)) && 
                numPremiado.substring(3).equals(numComprado.substring(3)) &&
                numPremiado.substring(2).equals(numComprado.substring(2)) &&
                !numPremiado.substring(1).equals( numComprado.substring(1))){
            tresUltimasCifras++;
            System.out.println("El cupon comprado " + getCuponComprado() +
                    " tiene las 3 últimas del número premiado: " + obtenerNumeroPremiado());
        }
        
        //Cuatro últimas cifras
        if(numPremiado.substring(4).equals(numComprado.substring(4)) && 
                numPremiado.substring(3).equals(numComprado.substring(3)) &&
                numPremiado.substring(2).equals(numComprado.substring(2)) &&
                numPremiado.substring(1).equals(numComprado.substring(1)) &&
                !numPremiado.substring(0).equals(numComprado.substring(0))){
            cuatroUltimasCifras++;
            System.out.println("El cupon comprado " + getCuponComprado() +
                    " tiene las 4 últimas cifras del número premiado: " + obtenerNumeroPremiado());
        }
        
        //Premio gordo
        if(numPremiado.substring(4).equals(numComprado.substring(4)) && 
                numPremiado.substring(3).equals(numComprado.substring(3)) &&
                numPremiado.substring(2).equals(numComprado.substring(2)) &&
                numPremiado.substring(1).equals(numComprado.substring(1)) &&
                numPremiado.substring(0).equals(numComprado.substring(0))){
            premiosGordos++;
            System.out.println("El cupon comprado " + getCuponComprado() +
                    " tiene el PREMIO GORDO, ENHORABUENA: " + obtenerNumeroPremiado());
        }
    }
}

//Clase con el método main. Ejecución del programa 
public class SorteoLoterias {
    public static void main(String[] args) {
        Scanner miScanner = new Scanner(System.in);
        //Creamos objeto de la clase Cupon
        Cupon miCupon = new Cupon();
        
        System.out.print("Introduce el número de cuón que desee comprar: ");
        miCupon.setCuponComprado(miScanner.nextInt());
        System.out.print("Introduce el número de sorteos que desee participar: ");
        miCupon.setDiasCupon(miScanner.nextInt());
        
        //Bucle que se repite el número de veces que indiquemos
        //en el número de sorteos
        for(int i = 1; i <= miCupon.getDiasCupon(); i++){
            miCupon.setNumeroPremiado();
            miCupon.premios();
            
        }
        
        System.out.println("Premios de ultima cifra: " + miCupon.getUltimaCifra());
        System.out.println("Premios de 2 últimas cifras: " + miCupon.getDosUltimasCifras());
        System.out.println("Premios de 3 últimas cifras: " + miCupon.getTresUltimasCifras());
        System.out.println("Premios de 4 últimas cifras: " + miCupon.getCuatroUltimasCifras());
        System.out.println("Premios Gordos: " + miCupon.getPremiosGordos());
    }
}


Al ejecutar el programa tendrá una salida como la de la siguiente imagen:


  • Cuando en el método premios() se utiliza la clase Formatter para dar formato al número y que este tenga 5 dígitos se convierte lo que devuelve, que es un tipo de la clase Formatter, en String utilizando String.valueOf().
  • Hay que crear dos objetos de la clase Formatter para poder dar formato a las dos variables que tenemos, numComprado y numPremiado.
  • Dentro del método premios() hay muchos condicionales if que lo que harán es que, mediante el uso del método substring y el método equals de la clase String comprobamos si el número comprado tiene la última cifra, las dos últimas cifras, las tres últimas cifras... iguales al número premiado. 

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...