我需要从13张牌中找出用户发牌的等级总和。
这是在我的类card.java中,它以字符串的形式返回卡片的值,然后以字符串的形式返回花色,最后以整数的形式返回排名。
public String toString(){
String s = ("I am the " + rankString[rank-2] + " of " + suit + "(rank): " + rank);
return s;
}这是在我的CardFrame类中。CardFrame.java
private void doButton1Stuff(){
//textArea.append("\nButton 1 Clicked");
textArea.setText("");
for(int i = 0; i<13; i++){
textArea.append(deck.getNextCard().toString()+"\n");
}一切都很好,我只需要找出一种方法,将所有的等级加在一起,从13张牌的用户,并输出为他们的分数。
public Card getNextCard(){
//check for end of deck
topCard++;
if(topCard==53){
topCard = 1;
shuffle();
}
return cards[deck[topCard-1]];发布于 2012-06-22 04:51:42
你需要为你的rank变量设置一个访问器。
public int getRank() {
return rank;
}然后,您可以对某些集合中的每一张牌使用它(这里我假设是一个数组):
for(Card c: cards) {
sum += c.getRank();
}对于您的用例,可以在这里使用它:
int sum = 0;
for(int i = 0; i<13; i++) {
Card c = deck.getNextCard();
textArea.append(c.toString()+"\n");
sum += c.getRank();
}发布于 2012-06-22 04:58:34
如果你不能从Card类中访问你的排名值,你可以像这样从它的toString()输出中读取它:
String cardToStringOutput = "I am the " + "rankString[rank-2]" + " of "
+ "suit" + "(rank): " + "11";
int rank=Integer.parseInt(cardToStringOutput.split(" ")[6]);
System.out.println("rank="+rank);但请考虑向Card类添加一些getter,这样您就不必使用上面的代码。
发布于 2012-06-22 04:59:05
看起来你的"Card“类(我不能从你的代码中知道你给它命名了什么)有一个"rank”成员,我猜它是一个整数。所以我认为你遇到的问题是迭代。试试这个:
private void doButton1Stuff(){
//textArea.append("\nButton 1 Clicked");
textArea.setText("");
int score = 0;
for(int i = 0; i<13; i++){
Card card = deck.getNextCard();
score += card.rank
textArea.append(card.toString()+"\n");
}
textArea.append("Score: ");
textArea.append(score);
}这假设您的成员变量“排名”是可访问的(请参阅"public","protected","private")
https://stackoverflow.com/questions/11146468
复制相似问题