저는 tic tac toe 보드를 나타내는 2 차원 배열을 가지고 있습니다. 빈 상자는 단지 ""입니다. 현재 게임 보드가 ard2d 문자열 배열에 저장됩니다. 2D 배열 = 3D 배열의 배열 인 게임 보드 배열을 만들고 싶습니다. 그래서 나는 그런 것 같아요3 차원 배열에 문제가 생겼습니다
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 개 보드를 원하는 게임은 9 × 9 일 것이다. 지금까지는 모든 것이 괜찮습니다.하지만 이제 게임 보드 (ar1)를보고 ar3에서 모든 가능한 동작을하고 싶습니다. 가능한 모든 이동을 위해 ar3에 게시판이 있습니다. 상자가 X 인 다음 다른 뭔가를 ""가지고
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;
}
}
당신이 경우에서 볼 수 있듯이 : 나는 AR2에 가능한 모든 움직임이다 보드에 빈 인덱스를 포함 할 배열을 만들 것이라고를 들어 또는 O는 I -1이 코드는 내가 원하는 일을한다 을 넣어하지만, 여기에 내가 AR3에 AR2에 저장된 모든 가능한 이동 생성하려고합니다 이제 문제가 온다 :
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의 각 인덱스에 대해 모든 보드에 대한 모든 동작을하고 있습니다. 예를 들어 (필자는 리터 × 3 보드에 보여) ^이 보드는 이전과 같습니다 빈 의미
^^^
^ X^
^^^
하지만 "이동 후
"내가 만들려고 모든 보드는 다음과 같습니다 을 (의 0,0을 가정 해 봅시다) :
대신 단지 첫 1O^^
^ X^
^^^
... 그리고 내가 두 번째 보드 diffrent 인덱스와 같은 일을하고 있어요 (AR3 [1])하지만 그것을 모든 보드에 영향을 미칩니다. (ar3 [0-k]) 그래서 결국 똑같은 80 개의 보드를 얻었습니다. 아무도 아이디어가 있습니까? 왜 모든 보드가 변경됩니까? K 인덱스에있는 보드 만 변경됩니까?
감사합니다. 내가 완전히 코드를 이해 확실하지 않다
나는 당신의 질문을 읽지 않았지만, 저장하고 싶은 것이 모두 하나의 문자 일 때 왜'char' 대신'String'을 사용해야하는지 물을 수 있습니까? – jlordo
전적으로 동의 함. JButtons의 getText 메서드는 String을 반환하고 나는 그것을 처음에 캐스팅하는 것을 게으른 것이었고 잊어 버렸습니다. 나는 그것을 바꿀 것이지만 그것은 질문과 관련이 없으므로 계속 읽을 수 있습니다 =] 감사합니다. –
캐스팅 할 필요가 없습니다. 'c'가 char 변수라면, 이것은 문자열이 될 것입니다 :' ""+ c' – jlordo