如何访问同一类但方法不同的列表

时间:2019-11-20 20:44:23

标签: 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;
    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”(无静态),则它将返回一个列表,但为空,如下所示:[]。我究竟做错了什么?也许使用了错误的访问修饰符?

3 个答案:

答案 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;
  }