主要课程。尝试迭代手中的卡片,并检查该值是否超过21。
int handValue;
for(int z = 0; z<hand.size(); z++){ //iterate through cards in hand
Cards card = hand.get(z); //to add values and check if bust (21)
System.out.println(valueofcards);
// hand.get(z).RankPoints()
// Rank.valueOf(hand.get(z), a)
}
System.out.println("Bust.");//check if bust
Cards类包含此枚举,方法为RankPoints()。我试图从主类中访问此方法,但是我尝试了很多google-foo我无法找到解决方案。我原本以为问题是试图从ArrayList中使用它,但我不认为这是问题所在。
public enum Rank{
ACE(11), DEUCE(2), THREE(3), FOUR(4), FIVE(5), SIX(6), SEVEN(7), EIGHT(8), NINE(9), TEN(10), JACK(10), QUEEN(10), KING(10);
private int RankPoints;
Rank (int points){
this.RankPoints = points;
}
public int RankPoints(){
return this.RankPoints;
}
}
这是使用枚举的卡构造函数:
private final Rank rank;
private final Suit suit;
Cards(Suit suit, Rank rank) {
this.rank = rank;
this.suit = suit;
}
感谢。
答案 0 :(得分:0)
假设您的Card类有getRank()
方法,那么您将需要使用它:
Rank rank = hand.get(z).getRank();
int points = rank.RankPoints(); // note methods should begin with a lower case letter.
然后你就可以从这个Rank对象中获得分数。
如果卡没有Rank getRank()
&#34; getter&#34;方法,然后它需要一个。
如,
int handValue;
for(int z = 0; z<hand.size(); z++){ //iterate through cards in hand
Cards card = hand.get(z); //to add values and check if bust (21)
Rank rank = card.getRank(); // better make sure Card has this method
int points = rank.RankPoints();
handValue += points;
// check now that it's not > 21
// ?? System.out.println(valueofcards);
}
同样,Cards类需要一个getRank()getter方法:
public Rank getRank() {
return rank;
}
顺便说一句,我会将你的卡类命名为卡,因为它定义了一张扑克牌的蓝图。是的,您可以使用它为多达52个单独的卡创建实例,但是您为每个卡(实例)使用一个相同的蓝图(类)。如果我有一个持有一堆卡片的课程,我可能会使用像卡片这样的名字,但你也可以在这里使用单数形状,例如Hand for a card hand或Deck for a deck of cards。