我正在创建一个类,它将在虚拟游戏棒中扮演计算机玩家的角色。但是,当我为这个类使用构造函数方法时,我丢失了我创建的数组,即使我已经在状态属性中声明了数组。 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
无法解析为某种类型。
答案 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++;
}
}