Java - ¿Por qué me da Assertion Error?

 
Vista:

¿Por qué me da Assertion Error?

Publicado por Celia (1 intervención) el 08/04/2018 18:28:40
me ha surgido un error al compilar una aplicacion que permite jugar al juego de Bacará,con una clase TestManoDeBacara. Adjunto TestManoDeBacara porque aqui no me cabe.Tengo la clase Carta, con su valor y su palo de tipo Enum:

1
2
3
4
5
6
7
public enum PaloBarajaFrancesa {
TREBOLES, DIAMANTES, CORAZONES, PICAS;
}
 
public enum ValorBarajaFrancesa {
AS, DOS, TRES, CUATRO, CINCO, SEIS, SIETE, OCHO, NUEVE, DIEZ, JOTA, REINA, REY;
}


Clase Carta:

1
2
3
4
5
6
7
8
public class Carta {
public final ValorBarajaFrancesa valor;
public final PaloBarajaFrancesa palo;
 
public Carta(ValorBarajaFrancesa valor,PaloBarajaFrancesa palo) {
    this.valor=valor;
    this.palo=palo;
}


Clase ManoDeBacara:Modela una mano de cartas del juego del Bacará. Las referencias a las cartas de la mano de cartas se deben almacenar utilizando un array.El tamaño del array a usar para almacenar las cartas deberá ser suficiente para almacenar el número máximo posible de cartas de una mano de Bacará(Máximo de cartas en una mano de bacara son 3).El valor de una mano de Bacará se calcula sumando el valor de las cartas de la mano, pero sabiendo que las cartas que sean AS,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE, valen 1,2,3,4,5,6,7,8,9 respectivamente, y DIEZ,JOTA,REINA,REY valen 0. A esa suma hay que hacerle la division modular entre 10. En el bacara gana la mano cuya puntuacion se acerque más al 9, que es el máximo de puntuacion.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
public class ManoDeBacara {
private Carta[] cartas;
private int indice;
private static final int NUMERODECARTAS=3;
private ManoDeBacara manojugador;
 
 
 
public ManoDeBacara(){
cartas=new Carta[NUMERODECARTAS];
indice=0;
}
/**
 * Método obtenerValor
 * Recorre el array de resultados calcula el ordinal y devuelve el resultado final
 **/
private int obtenerValor(Carta[] cartas){
    int valor=0;
    int valorCarta;
    for(indice=0; indice<NUMERODECARTAS;indice++) {
        if(cartas[indice]!=null) {
            if((cartas[indice].valor.name().equals("DIEZ"))||(cartas[indice].valor.name().equals("JOTA"))||(cartas[indice].valor.name().equals("REY"))||(cartas[indice].valor.name().equals("REINA")))
            {
                valorCarta=0;
        }else {
            valorCarta=cartas[indice].valor.ordinal()+1;
        }
            valor+=valorCarta;
            valor%=10;
        }
    }
    return valor;
}
 
 
/**
 * Método añadirCarta
 * Añade una carta a la mano de Bacará.
 * @param carta - Carta que se añade a la mano de Bacará
 * @return true si se pudo añadir la carta a la mano.
 * false si no se pudo añadir la carta por no admitir más cartas la mano.
 */
public boolean añadirCarta(Carta carta){
    boolean cartaAñadida = false;
    if(indice<cartas.length){
        cartas[indice]=carta;
            indice++;
            cartaAñadida=true;
    }
        return cartaAñadida;
 
}
/**
 * Método ganaA
 * Indica si la mano utilizada para invocar al método es ganadora frente a la mano que se recibe como argumento.
 * Para saber cómo se puntúa una mano de Bacará se recomienda consultar la documentacion del reglamento del Bacará.
 * @param mano - Mano a comparar con la mano utilizada para invocar al método.
 * @return true si la mano utilizada para invocar al método es ganadora frente a la mano que se recibe como argumento.
 */
public boolean ganaA(ManoDeBacara mano){
    boolean manoEsGanadora=false;
    manojugador=new ManoDeBacara();
    int valorbanca=mano.obtenerValor(cartas);
    int valorjugador=manojugador.obtenerValor(cartas);
    if((valorjugador > valorbanca))
        manoEsGanadora=true;
 
    return manoEsGanadora;
}
/**
 * Método obtenerMano
 * Devuelve una representación textual de la mano en forma de una secuencia de cartas, donde cada carta se representa a su vez con su valor y palo.
 * Por ejemplo, si la mano tiene dos cartas (tres de picas y rey de diamantes) entonces su representación textual será "[TRES/PICAS, REY/DIAMANTES]".
 * @return Representación textual de la mano.
 */
public String obtenerMano(){
    String cadena="[";
 
    for(int i=0; i<NUMERODECARTAS;i++){
        if(cartas[i]!=null)
            cadena=cadena.concat(cartas[i].valor.name()+"/"+cartas[i].palo.name()+"],");
    }
    //for, hay que recorrer el array para los valores que tengamos y separarlos por comas
 
    return cadena;}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder