[Dúvida] como visualizar as minhas apostas efectuadas e guardada num array

2 respostas
GinaKarinho
OLá pessoal, td bem

eu tenho uma duvida, em ver as apostas de um apostador , tipo assim, eu tenho o seguinte codigo:


package bitmilhoes;

public class Apostador {

  
    private Aposta [] apostas;
    private int nrAposta;
    static final int MAX_APOSTAS = 2;

  
   

 
    public void inicializaNrApostas() {

        nrApostas = 0;
        apostas = new Aposta[2];


    }


    public Apostador() {

        this.apostas = new Aposta[MAX_APOSTAS];
        this.nrApostas=0;
 
}


public int getNrAposta(int telefone) {
        int idx;

        if(!isEmpty()){
            idx=isIndexOfApostador(telefone);
            if (idx!=-1)
                return this.apostadores[idx].getNrApostas();
            else
                return -1;

        }else
            return -1;

}


     public Aposta criarAposta(Chave chave) {
         IAposta apostador_aux=null;

         if (!isApostasFull()){
         this.apostas[this.nrApostas] = new Aposta(this,chave);
         apostador_aux=this.apostas[this.nrApostas];
         this.nrApostas++;
         }

         return apostador_aux;


    }

     public boolean isApostasFull(){
        if(this.nrApostas==MAX_APOSTAS)
            return true;
        else
            return false;

     }

    /**
     * Devolve as apostas efectuadas pelo apostador.  
     */
    public Aposta[] getApostas() {

        return this.apostas;
    }


// 
  
   public void apostaPersonalizada( int  [] numerosApostado, int [] estrelasApostado) {

             int idx;
        idx=isIndexOfApostador(telefone, pin);
       if(idx!=-1)

         apostadores[idx].criarAposta(new Chave (numerosApostado, estrelasApostado));

    }



    @Override
   public String imprimirAposta()

        String strout = " ";

        strout += "NUMÉRO DE APOSTA     : "+this.nrApostas+"\n";
        strout += "APOSTA               : "+this.apostas.toString()+"\n";
     

        return strout;

    }

    }

/*-----------------------------------------------------------------------*/

// Classe chave 

package bitmilhoes;

public class Chave {


    private int[] numeros;
    private int[] estrelas;

    
    public Chave(int[] numeros, int[] estrelas) {
        this.numeros = new int [5];
        this.estrelas = new int [2];

    }

    
     public int[] getEstrelas() {
        return null;
    }

    public int[] getNumeros() {
        return null;
    }




    @Override
    public String toString() {
        String strout = "";

        strout += "NUMÉROS : "+this.numeros.toString();
        strout += "ESTRELAS: "+this.estrelas.toString();

        return strout;

    }



}

/*----------------------------------------------------------------------*/

// Classe Aposta

package bitmilhoes;

public class Aposta {

 
  
    private Apostador apostador;
    private Chave chave;
    private Chave chaveAposta;



   public Aposta(Apostador apostador, Chave chave) {

        this.apostador = apostador;
        this.chaveAposta = chave;
      

    }
    

    public Apostador getApostador() {
        return this.apostador;
    }

    public Chave getChave() {
        return this.chave;
    }


     public Chave getChaveAposta() {
        return this.chaveAposta;
    }


    @Override
    public String toString() {

      
        String strout = "";

     strout += "CHAVE DO APOSTADOR: " + this.chaveAposta.toString();
   

     return strout;
        

    }

}

/*-------------------------------------------------------------------------------------------------*/
//depois tenho a classe main 


package bitmilhoes;



/**
 * @author ipoo
 * @version 1.0
 * @created 11-Nov-2010 01:11:26
 */
public class Aplicacao {

    private Apostador apostador;
    private java.util.Scanner teclado = new java.util.Scanner(System.in);


    public Aplicacao() {
        this.apostador = new Apostador();

    }
    public static void main(String[] args) {
        Aplicacao aplicacao = new Aplicacao();
        aplicacao.menuPrincipal();

    }

    /**
     * Este método destina-se a escrever o MENU PRINCIPAL, pedir a opcao e invocar
     * o metodo correspondente à opcao escolhida.
     * @return  none
     */
    public void menuPrincipal() {


        int opcao = 0;
        char resposta = 'N';

        do {
            System.out.println("MENU PRINCIPAL");
           System.out.println("1. Registo de Apostas");
          opcao = escolherOpcao(1, 2);

            switch (opcao) {
         
                case 1:
                    menuRegistoApostas();
                    break;
              
               case 2:
                    break;

                default:
                    resposta = respostaSN("Confirma saida [S/N]? ");
                    break;

            }
        } while (resposta == 'N');


    }

  

    /* --REGISTO DE APOSTAS-- */
    /**
     *
     * Destina-se a escrever o MENU REGISTO DE APOSTAS, pedir a opcao e invocar
     * o metodo correspondente à opcao escolhida.
     *
     * Este método é invocado a partir do MENU PRINCIPAL -> 2. Registo de apostas
     *
     * @return  none
     */
    public void menuRegistoApostas() {

        int opcao = 0;

        do {

            System.out.println("MENU REGISTO DE APOSTAS");
            System.out.println("1. Aposta personalizada");
            System.out.println("2. Voltar");
            opcao = escolherOpcao(1, 2);

            switch (opcao) {
                case 1:
                    ApostaPersonlizada();
                    break;
                case 2:
                         break;
                default:
                    break;

            }

        } while (opcao != 3);


    }

      /*---------------------------------------------------------------------------------------*/

    public void ApostaPersonlizada() {

        int [] numerosApostado = new int [5];
        int [] estrelasApostado = new int [2];
        int telefone;
        short pin;
        char confirma;
        int numero = 0;
        int estrela = 0;
        int qtNum=0;
        int qtEstrelas=0;


         System.out.println("NUMEROS DE APOSTA = "+apostador.getNrAposta(telefone)+"\n");

         System.out.println("++++ NUMEROS ++++");
         do{
            System.out.printf("Numero %02d :",qtNum+1);
            numero=teclado.nextInt();
            if(isNumeroValido(numero)){
                if (isNumeroRepetido(numero, numerosApostado)==false){
                    numerosApostado[qtNum]= numero;
                    qtNum++;
                }else
                    System.out.println("ERRO! Numéro repetido.");
            }

         }while(qtNum<5);


         System.out.println("++++ ESTRELAS ++++");
         do{
            System.out.printf("Estrela %02d :",qtEstrelas+1);
            estrela=teclado.nextInt();
            if(isEstrelaValido(estrela)){
                if (isEstrelaRepetido(estrela, estrelasApostado)==false){
                    estrelasApostado[qtEstrelas] = estrela;
                    qtEstrelas++;
                }else
                    System.out.println("ERRO! Estrela repetida.");
            }

         }while(qtEstrelas<2);


           confirma = respostaSN("Deseja registar a sua aposta? [S/N]?");

             if (confirma == 'S'|| confirma == 'N') {

               if(gestor.getNrAposta(telefone) > 10 ){

                   System.out.println("ERRO! Ultrapassou os limtes da aposta.");
               }

             apostador.apostaPersonalizada(numerosApostado,  estrelasApostado));

              System.out.println(apostador.toString());
        }

            else if (confirma == 'N' || confirma == 'n') {

            System.out.println("Criação de Apostador Cancelada!");
        }

    }


    /*----------------------------------------------------------------------------------------*/


    /*   --METODOS GERAIS-- */
    /**
     * método para validar um intervalo de números inteiros.
     *  modo de uso: int opcao=escolherOpcao();
     *  @param  int minimo - Valor minimo admitido
     *  @param  int maximo - Valor maximo admitido
     * @return  char - Devolve o caracter com a resposta
     */
    private int escolherOpcao(int minimo, int maximo) {
        int opcao;
        do {
            opcao = Integer.MAX_VALUE;
            System.out.print("Escolha Opção: ");
            if (!teclado.hasNextInt()) {
                teclado.nextLine();
                continue;
            }
            opcao = teclado.nextInt();
        } while (opcao < minimo || opcao > maximo);
        return opcao;
    }

    /**
     * método para fazer perguntas ao utilizador, para obter uma resposta
     * do tipo Sim/Nao. Este metodo faz a validação
     *  modo de uso: char resposta=respostaSN();
     * @return  Char - Devolve o caracter com a resposta
     */
    private char respostaSN(String mensagem) {

        char resposta;

        do {
            System.out.print(mensagem);
            resposta = Character.toUpperCase(teclado.next().charAt(0));
        } while (resposta != 'S' && resposta != 'N');

        return resposta;
    }


    /*-------------------------------------------------------------------------------------*/

    //NOVO


    /* metodo para receber numero
    *  @param  int minimo - Valor minimo admitido
     *  @param  int maximo - Valor maximo admitido
     * @return  num - Devolve o numero
     */

     private boolean isNumeroValido(int n){
        if (n>=1 && n<=50)
            return true;

        return false;
     }

     public boolean isNumeroRepetido(int n, int numeros[]){
         for (int i = 0; i < numeros.length; i++) {
             if (numeros[i]==n)
                 return true;

         }

         return false;


     }

   /* metodo para receber estrela
    *  @param  int minimo - Valor minimo admitido
     *  @param  int maximo - Valor maximo admitido
     * @return  num - Devolve o numero
     */

     private boolean isEstrelaValido(int n){
        if (n>=1 && n<=9)
            return true;

        return false;
     }

     public boolean isEstrelaRepetido(int n,int numeros[]){
         for (int i = 0; i < numeros.length; i++) {
             if (numeros[i]==n)
                 return true;

         }

         return false;


     }

}

2 Respostas

GinaKarinho
// A minha duvida é o seguinte:

se este metodo :

  
   /  * Devolve as apostas efectuadas pelo apostador.       */  

        public Aposta[] getApostas() {  

           return this.apostas;  
     }  
   
// então porque quando insiro os numeros  e depois as guardo neste metodo 

    apostador.apostaPersonalizada(numerosApostado,  estrelasApostado));  



// e depois de guardado como tenho este metodo abaixo que é para mostrar a aposta do apostador

    System.out.println(apostador.imprimirAposta()) 

 //  a minha duvida é aqui porque depois de guardar a aposta devia imprimir aposta do apostador provavelmente deveria mostrar

NUMÉRO DE APOSTA: 1
APOSTA          : CHAVE DO APOSTADOR  : NUMÉROS : 1 2 3 4 5   
                                        ESTRELAS: 1 2              //e que fazem da aposta que a chaveAposta.toString()


       
       
 // não mostra e dá erro nem os numeros inseridos e nem as estrelas


// Alguma sugestão agradecia
d34d_d3v1l

Olá…

meu primeiro palpite seria revisar o que acontece no método onde está o problema:

" imprimirAposta() "

Meu segundo palpite seria verificar se as apostas estão realmente sendo realizadas…
(Se esta gravando direitinho)…

achei estranho o toString que você usou… poderia por favor comentar?

E caso já tenha solucionado o problema, poderia dizer a solução?

Espero poder ajudar…
Desculpe qualquer coisa!
Abraços

Criado 24 de dezembro de 2010
Ultima resposta 2 de jan. de 2011
Respostas 2
Participantes 2