Java 如何访问同一类中不同方法的列表
我有一门课叫DeckPC:Java 如何访问同一类中不同方法的列表,java,Java,我有一门课叫DeckPC: public class DeckPC { // creating 3 cards, composed of one random number from 1 to 7 private int cardSword = (int)(Math.random() * ((7 - 1) + 1)) + 1; private int cardBast = (int)(Math.random() * ((7 - 1) + 1)) + 1; p
public class DeckPC {
// creating 3 cards, composed of one random number from 1 to 7
private int cardSword = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private int cardBast = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private int cardGold = (int)(Math.random() * ((7 - 1) + 1)) + 1;
static List<Integer> DeckPC = new ArrayList<Integer>();
public void creatingDeck(int cardSword, int cardBast, int cardGold) {
this.cardSword = cardSword;
this.cardBast = cardBast;
this.cardGold = cardGold;
// trying to add the variables(ints) from above into the DeckPC list.
DeckPC.add(cardSword);
DeckPC.add(cardBast);
DeckPC.add(cardGold);
}
public List<Integer> getDeckPC() {
return DeckPC;
}
}
但问题是,它不会以这种方式返回任何东西。但是如果我在creatingDeck方法中初始化列表“DeckPC”(不带static),那么它将返回一个列表,但它是空的,如下所示:[]。我做错了什么?可能使用了错误的访问修饰符?在调用
getDeckPC()
之前,您需要调用creatingDeck(…)
,以便将列表项添加到列表中:
DeckPC deckPC = new DeckPC();
deckPC.creatingDeck(1, 2, 3); ///// ADD this line
deckPC.getDeckPC();
作为旁注,如果类、成员变量、实例化变量和方法不具有相同的名称,则代码将更易于调试并避免一些很难发现的错误。您没有调用
creatingDeck
过程来初始化列表的值。您在这里有两个选择:
1-您可以通过调用creatingDeck
过程并传递一些参数来初始化代码,如果您想要一个随机数,这不是一个好主意
2-可以使用如下静态初始值设定项:
public class DeckPC {
// creating 3 cards, composed of one random number from 1 to 7
private static int cardSword = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private static int cardBast = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private static int cardGold = (int)(Math.random() * ((7 - 1) + 1)) + 1;
static List<Integer> DeckPC = new ArrayList<Integer>();
static {
DeckPC.add(cardSword);
DeckPC.add(cardBast);
DeckPC.add(cardGold);
}
public List<Integer> getDeckPC() {
return DeckPC;
}
}
公共类DeckPC{
//创建3张卡,由1到7的一个随机数组成
私有静态int cardbrow=(int)(Math.random()*((7-1)+1))+1;
私有静态intcardbast=(int)(Math.random()*((7-1)+1))+1;
私有静态intcardGold=(int)(Math.random()*((7-1)+1))+1;
静态列表DeckPC=newarraylist();
静止的{
DeckPC.add(cardbown);
DeckPC.add(卡巴斯特);
DeckPC.add(cardGold);
}
公共列表getDeckPC(){
返回DeckPC;
}
}
-静态初始值设定项在程序第一次运行时被调用,因为在Java中,静态变量在程序的整个生命周期中都是可用的
-更新:还有一个实例初始值设定项,如果您想在每次创建类的新实例时更新值,代码如下所示:
public class DeckPC {
// creating 3 cards, composed of one random number from 1 to 7
private int cardSword = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private int cardBast = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private int cardGold = (int)(Math.random() * ((7 - 1) + 1)) + 1;
static List<Integer> DeckPC = new ArrayList<Integer>();
{
DeckPC.add(cardSword);
DeckPC.add(cardBast);
DeckPC.add(cardGold);
}
public List<Integer> getDeckPC() {
return DeckPC;
}
}
公共类DeckPC{
//创建3张卡,由1到7的一个随机数组成
私有int-cardbrow=(int)(Math.random()*((7-1)+1))+1;
私有intcardbast=(int)(Math.random()*((7-1)+1))+1;
私有整数cardGold=(int)(Math.random()*((7-1)+1))+1;
静态列表DeckPC=newarraylist();
{
DeckPC.add(cardbown);
DeckPC.add(卡巴斯特);
DeckPC.add(cardGold);
}
公共列表getDeckPC(){
返回DeckPC;
}
}
您应该首先调用creatingDeck方法来填充列表,然后调用getDeckPC()来打印它,或者只是
公共列表getDeckPC(){创造甲板(1,2,3)//
public class DeckPC {
// creating 3 cards, composed of one random number from 1 to 7
private int cardSword = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private int cardBast = (int)(Math.random() * ((7 - 1) + 1)) + 1;
private int cardGold = (int)(Math.random() * ((7 - 1) + 1)) + 1;
static List<Integer> DeckPC = new ArrayList<Integer>();
{
DeckPC.add(cardSword);
DeckPC.add(cardBast);
DeckPC.add(cardGold);
}
public List<Integer> getDeckPC() {
return DeckPC;
}
}