查找ArrayList对象的总数Java

时间:2015-08-02 22:18:00

标签: java arrays arraylist playing-cards

我需要找到一些ArrayList对象的总数(扑克牌值)。我有一个Card.java类和一个User.java类。我也有一个userHand ArrayList。我没有得到任何错误,但它不打印总和。这是我的代码:

Card.java

import java.util.Random;


public class Card {

//Variables
public static String[] card_types = { "spades", "hearts", "clubs", "diamonds"};
public static int value;
public static String type;

Card(){
    value = genCardValue();
    type = genCardType();
}

//Get the value of the card
public static int getValue(){
    return value;
}

//Get the type of the card
public static String getType(){
    return type;
}

//Generate the card value (example: 5)
public static int genCardValue(){

    int min = 2;
    int max = 11;
    int range = max - min;

    int cardValue = new Random().nextInt(range + 1) + 2;

    return cardValue;
}


//Generate the card type (example: spades)
public static String genCardType(){
    String cardType = (card_types[new Random().nextInt(card_types.length)]);

    return cardType;
}


}

User.java

import java.util.ArrayList;
import java.util.List;

public class User {

List<Card> userHand = new ArrayList<Card>();
int i = 10;

User(){
    userHand.add(0, new Card());
    userHand.add(1, new Card());
    int sum = 0;

    for (Card card : userHand){
        int cardValue = card.getValue();
        sum += cardValue;
    }

    System.out.println(sum);
}


}

只是打印空白。任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:1)

从您的代码中删除所有static(这只是建议如何正确执行)。并从main方法运行代码:

  public static void main(String[] args) {
        new User();
    }

你也可以简化这个:

userHand.add(0, new Card());
userHand.add(1, new Card());

只是:

userHand.add(new Card());
userHand.add(new Card());

将sum逻辑从构造函数移动到单独的方法也更好:

  public int sum() {
        int res = 0;
        for (Card card : userHand) {
            int cardValue = card.getValue();
            res += cardValue;
        }
        return res;
    }

当你想看到总和时,请调用它:

User u = new User();
System.out.println(user.sum());

答案 1 :(得分:1)

static类中的所有instance variables和方法中删除Card类型。 static定义了绑定我的类的东西,每个类一个。因此,该类的所有实例都共享static instance variable

我还会将您的代码重新组织为以下内容:

int sum;

User(){
    userHand.add(new Card());
    userHand.add(new Card());
    iterate();
}

void inerate(){
 for (Card card : userHand){
        int cardValue = card.getValue();
        sum += cardValue;
    }
}

int getSum(){
   return sum;
}

您还应该创建一个User类型的实例来启动方法调用过程:

public static void main(String[] args){
    User user = new User();
    System.out.println(user.getSum());
}