我有一个叫做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;
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;
}
}
然后是一个带有main方法的主类,在其中我想调用getDeckPC(),以便它显示我已插入DeckPC的值:
DeckPC deckPC = new DeckPC();
deckPC.getDeckPC();
但是问题在于它完全不返回任何内容。但是,如果我在creatingDeck方法内部初始化列表“ DeckPC”(无静态),则它将返回一个列表,但为空,如下所示:[]。我究竟做错了什么?也许使用了错误的访问修饰符?
答案 0 :(得分:2)
您需要先致电operator+
,然后再致电const Matrix&
,以便将列表项添加到列表中:
Matrix
请注意,如果类,成员变量,实例化变量和方法的名称不同,则代码将更易于调试,并且避免了一些非常难以发现的错误。
答案 1 :(得分:1)
您没有调用creatingDeck
过程来初始化列表的值,这里有2个选择:
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;
}
}
-static初始值设定项在您的程序首次运行时被调用,因为在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;
}
}
答案 2 :(得分:0)
您应该首先调用creationDeck方法填写列表,然后调用getDeckPC()进行打印,或者只是
公共列表getDeckPC(){
creationDeck(1,2,3); // <------在这里调用 返回DeckPC;
}