ArrayList

4 respostas
B

Estou fazendo um método dentro da ArrayList que retorna 4 numeros iguais, porém ele retorna true, mesmo se tem somente 3 números iguais... não estou conseguindo achar o erro, alguém pode me ajudar?

Eis o código:

public boolean verificaQuatro(){
            int t=s.size();
            int q=0;
            ValorFace valor;
            Numero c=null;
            boolean quatro=false;
            int nn = 0;
            
            for(int i=0; i<t; i++){
                for(int y=i+1; y<t; y++){
                    if(s.get(i).getValor()==s.get(y).getValor()){
                        c=s.get(y);
                        q++;
                }

            }
            if(q==3){
                quatro=true;
                }
                else quatro=false;
            }
            return quatro;
        }

4 Respostas

O

nao sei ao certo, + pelo que entendi vc quer que se todos forem iguais ele retorna true certo?
entao se um for false pra retornar false .

if(q==3){

quatro=true;

}

else
 quatro = false;
 [b]break;[/b]

pq vc nao tera necessidade de ver os outros, acho que o erro ai ta dando o seguinte, ele deve estar pegando somente o ultimo numero consultado

se ajudei valeu, se falei merda pra cacete foi mau hehehe!

B

Valeu ae, funcionou =]

B

Assim oh, eu estou fazendo um jogo de Poker há algumas semanas já, e estou com problemas em verificar 3 jogadas...

O resto tudo está pronto, só falta elas, tou quebrando a cabeça mas não consigo fazer...

Vou mostrar o código, se alguém puder me ajudar =].

Full House:

public boolean verificaFullHouse(){//n funfa
        int t = mao.size();
        boolean trinca = false;
        int tr = 0;
        int par = 0;
        boolean fh = false;
        Carta c;
        for(int i=0; i<t-1; i++){
            if(mao.get(i).getValor()!=mao.get(i+1).getValor()){
                c=mao.get(i+1);
                guardaValor.add(c);
                tr++;
                    }
                    
                    if(tr==2 && verificaDoisPares() == false){
                        trinca=true;                         
                    }
                    if(mao.get(i).getValor()==mao.get(i+1).getValor()){
                        par++;
                    }
                    if(par == 1 && trinca == true){
                        fh = true;
                    }
                    else fh = false;
                }
                return fh;
            }

Straight e Straight Flush:

public int straightFlush(){
        int tamanho=mao.size();
            int n=0;
            Carta c1, c2; 
            boolean verificaSequencia=false;
            for(int i=0; i<tamanho; i++){
                   for(int y=i+1; i<tamanho; i++){
                       if((valor(mao.get(y).getValor()))-(valor(mao.get(i).getValor()))==1 || valor(mao.get(y).getValor())-(valor(mao.get(i).getValor()))==-1){
                             n++;
                            }
                            if(n==5){
                                   verificaSequencia=true;
                                  }
                                if(verificaSequencia = true && verificaFlush() == true){
                                    return 2;
                                }
                                else if(verificaSequencia = true && verificaFlush() == false){
                                    return 1;
                                }
                                else return 0;
                            }
                        }
                    
           return 0;
        }

Não quero que ninguém faça para mim, só que aponte os erros. Esses dois métodos fazem parte de um trabalho que eu tenho que desenvolver, e claro que pode pedir auxílio aos outros, mas eu quero é aprender, e não pegar as coisas prontas sem aprender nada.

Muito obrigado desde já.

sergiotaborda

bruxo:
Estou fazendo um método dentro da ArrayList que retorna 4 numeros iguais, porém ele retorna true, mesmo se tem somente 3 números iguais… não estou conseguindo achar o erro, alguém pode me ajudar?

O problema já foi resolvido mas vc pode considerar usar um Map<Integer, Integer> para contar.

Map<Integer, Integer> contadores = new TreeMap<Integer, Integer>();
for (Card card : mao){

   Integer contador =   contadores .get(card.getValor());
    if ( contador == null{
        contador = 0;
   } 

   if (contador== 3){ // (A)
           return true; // se havia 3 e foi encontrada mais uma então são 4
   }  

   contadores.put(vard.getValor(), contador + 1);

   if (contadores.size()== 3 ){ //(B)
        return false; // se ha três diferentes é impossivel haver 4 iguais.
   }
  
}

}

A e B são otimizações que interrompem a procura mais cedo.

Criado 26 de junho de 2008
Ultima resposta 27 de jun. de 2008
Respostas 4
Participantes 3