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;
}
}
[Dúvida] como visualizar as minhas apostas efectuadas e guardada num array
2 Respostas
// 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
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
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo