我需要找到一些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);
}
}
只是打印空白。任何帮助表示赞赏!谢谢!
答案 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());
}