我有一个代表一个tic tac脚趾板的2d阵列。 空盒子就是“”; 我目前的游戏棋盘保存在ar1中,这是2d字符串数组。 我想制作一个数组为2d array = 3d数组的游戏板。 所以我想这将是这样的:3D阵列发生错误
String[][][]ar3 = new String[80][9][9]; // array of game boards
for(int k=0;k<ar3.length;k++)// filling the array with the current game board
{
ar3[k] = ar1;
}
是啊,我想80米板和游戏将是9x9的。 直到现在一切都很好......但现在我想看看游戏板(ar1)并在ar3上进行一切可能的动作。 因此,对于每一个可能的举措,我都在ar3上获得了一块板子。 对于我将创建一个将包含对董事会是在AR2每一个可能的举动空指标的数组:
int[][]ar2 = new int[81][2]; // contains blank boxes indexes
int line = 0;
for(int k=0;k<SIZE;k++) //finds blank boxes indexes and adding to the array
for(int j=0;j<SIZE;j++,line++)
{
if(ar1[k][j].equals(""))
{
ar2[line][0] = k;
ar2[line][1] = j;
}
else
{
ar2[line][0] = -1;
ar2[line][1] = -1;
}
}
正如你在的情况下看到盒子有别的事情,然后“”这是X或O的话,我就把-1 这段代码是做我想要什么,但现在这里谈到这个问题,我会尝试生成所有存储在AR2在AR3可能的行动:
String[][][]ar3 = new String[80][9][9]; // array of game boards
for(int k=0;k<ar3.length;k++)// filling the array with the current game board
{
ar3[k] = ar1;
}
for(int k=0;k<ar3.length;k++)// making a move
{
int i1 = ar2[k][0];
int i2 = ar2[k][1];
if(!(i1 == -1 || i2 == -1))
if(num%2==0)
ar3[k][i1][i2] = "X";
else
ar3[k][i1][i2] = "O";
}
我不知道为什么,而不是为每个板子做一个单独的动作,对于ar3中的每个索引,它都在为所有的板子做所有的动作..例如(我会L于一个3×3板展示) ^指空 板看起来像在此之前:
^^^
^ X^
^^^
但经过“招“我试图让(比方说0,0) 所有的板看起来像这样:
O^^
^ X^
^^^
,而不是第一只1 ...然后我在做与不同势指标同样的事情第二板(AR3 [1]),但它影响所有的电路板..(ar3 [0-k]),所以最终我得到了80块相同的电路板。 任何人有想法? 为什么它会改变所有的电路板?而不是K指数上的电路板?
谢谢!
我没有看完你的问题,但我可以问你为什么当你想要保存的是一个字母时,为什么使用'String'而不是'char'? – jlordo
完全同意。 JButtons的getText方法返回一个字符串,我懒得把它投入开始,我忘了它。我会改变它,但它与问题无关,所以你可以继续阅读=]谢谢。 –
不需要投。如果'c'是一个字符变量,这将是一个字符串:'“”+ c' – jlordo