未接受阵列声明

时间:2015-01-27 06:35:28

标签: java arrays declaration

我正在创建一个类,它将在虚拟游戏棒中扮演计算机玩家的角色。但是,当我为这个类使用构造函数方法时,我丢失了我创建的数组,即使我已经在状态属性中声明了数组。 20分钟后,我完全迷失了。

我是Java新手,我正在努力学习并变得更好。真的很感激任何帮助。 下面是重新设计的AI类以及Eclipse继续提交的错误。

public class RedesignedAI {

private int[][] largeArray;
private int AIChoiceStick;
private Random random = new Random();
private int CurrentScore[] = new int[51]; //at max, if 100 sticks are initially chosen, then each player takes at max 50 sticks, 
private int h = 0;                                                                         //^so why not have one more in case



public RedesignedAI(int NumberSticks) //this is a constructor method and creates the arrays that contains a
{
    largeArray[][] = new int[NumberSticks][3];
    int i = 0;
    while(i < NumberSticks) 
    {    
        largeArray[i][0] = 1;      //ADD THIS
        largeArray[i][1] = 1;
        largeArray[i][2] = 1;
        i++;
    }     
}

错误:largeArray无法解析为某种类型。

7 个答案:

答案 0 :(得分:1)

您错误地初始化了largeArray。使用:

largeArray = new int[NumberSticks][3];

new分配一个二维数组,因此类型在=的两侧都是连贯的。

如果要按块分配块,则应使用[]语法:

largeArray = new int[NumberSticks][]; // array of NumberSticks entries to array of int (not yet determined)
for (int i=0; i<NumberSticks; i++) {
  largeArray[i] = new int[3]; // i-th entry of array largeArray is a new array of 3 ints
}

largeArray是对int s数组的引用数组的引用。 largeArray[i]是对int s数组的引用。 largeArray[i][j]int

答案 1 :(得分:0)

试试这个

private int[][] largeArray = null;

最初使用null初始化。 然后在构造函数

largeArray[][] = new int[3][3];

因为价值是动态的,无论如何你正在改变它

答案 2 :(得分:0)

您必须在顶部初始化array

private int[][] largeArray = new int[x][y];

array始终具有固定长度。只有list可以改变长度。

答案 3 :(得分:0)

改变这个:

largeArray[][] = new int[NumberSticks][3];

进入这个:

largeArray = new int[NumberSticks][3];

答案 4 :(得分:0)

您不需要构造函数的largeArray代码中的[][]。这样做:

largeArray = new int[NumberSticks][3];

答案 5 :(得分:0)

错误的代码: largeArray [] [] = new int [NumberSticks] [3];

改为使用: largeArray = new int [NumberSticks] [3];

答案 6 :(得分:0)

您可能会发现使用ArrayList更容易。也许是这样的:

private List<List<Integer>> largeArray;

...

public RedesignedAI(int NumberSticks) {

    largeArray = new ArrayList<>();

    int i = 0;

    while(i < NumberSticks) {

        List<Integer> innerArray = new ArrayList<>();

        innerArray.add(1);
        innerArray.add(1);
        innerArray.add(1);

        largeArray.add(innerArray); 

        i++;
    }
}