Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何访问同一类中不同方法的列表_Java - Fatal编程技术网

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

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

我有一门课叫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;
    }
}

但问题是,它不会以这种方式返回任何东西。但是如果我在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;
    }
}