Boggle과 같은 게임을위한 프로그램을 작성해야하며, 현재 현재 단어 아래에있는 각 문자를 확인하여 단어를 만들지 확인합니다. 그래서 이런 보드를 위해서 :데이터를 2D 배열로 다시 삽입하는 문제
W O Y R
F U M F
H T R V
I G S W
단어는 위에서 아래로가는 "OUT"입니다. 단어의 일부를 찾으면 그 문자를 문자열에 넣고 null로 설정하여 같은 단어에 두 번 사용하지 않습니다 (전체 알고리즘은 여러 방향으로 검색 할 수 있어야합니다). 나는 스택을 사용하여 내가 사용했던 글자의 좌표를 추적 할 수있다. 그래서 나는 스택을 팝 할 때마다 문자열의 마지막 글자를 가져 와서 보드의 원래 위치로 되돌려 놓는다. 그러나 문제는 여러 글자를 제거하면 이전 글을 덮어 쓰면서 같은 글자에 모두 넣는다는 것입니다. 나는 내 코드를 통과하고 두 번 다시 작성하려고했습니다
W null Y R
F null M F
H O R V
I G S W
하지만 항상이 작업을 수행 : "OUT"의 경우 그래서 보드는 세 글자를 교체 한 후 다음과 같이 찾고 끝납니다. 왜 이런 일이 일어나고 있는지에 대해 통찰력을 갖고 있습니까?
private void checkNeighbors(LetterCoor center){
String check = out;
while (!path.empty()){
if(center.getDirec()==0){//If the direction to check is down
System.out.println("Bottom");
if((center.getRow())+1<sideLength && board[(center.getRow())+1][center.getCol()]!=null){//makes sure the space below is !null and !out of bounds
check+=board[center.getRow()+1][center.getCol()];
System.out.println("Checking " + check);
if(isValidWord(check)){//checks if string is part of the lexicon
center.nextNeighbor();
board[center.getRow()+1][center.getCol()]=null;
center = new LetterCoor(center.getRow()+1, center.getCol(), 0);
System.out.println("push " + check.substring(check.length()-1));
path.push(center);
out=check;
}
else{
center=(LetterCoor) path.pop();
center.nextNeighbor();
path.push(center);
}
}//end of null if
else{
System.out.println("Null or end of board");
center=(LetterCoor) path.pop();
center.nextNeighbor();
path.push(center);
}
}//end of direc 0 if
else{
System.out.println("pop " + out.substring(out.length()-1,out.length()));
center=(LetterCoor) path.pop();
center.nextNeighbor();
board[center.getRow()][center.getCol()]=out.substring(out.length()-1,out.length());
out=out.substring(0,out.length()-1);
if (center.getDirec()<1){
path.push(center);
}
}
System.out.println("Current string is " + out);
}//end of while loop
}
내 코드에 대한 설명이 필요하면 알려주십시오.
또한 LeterCoor 객체는 3 개의 int를 저장합니다. 첫 번째는 문자의 행 색인이고 두 번째는 열 색인이며 세 번째는 검색중인 방향을 나타냅니다 (0 = 아래, 1 = 오른쪽 아래, 2 = 오른쪽 등)
게시물을 읽기 쉽게 만들 수 있습니까? u가 오류가 발생하면 plz 게시 plz –
@KickButtowski 내가 할 수있는 가장 큰 것은이 코드가 어떻게 실행되는지를 명확하게하거나 설명하기위한 몇 가지 설명에 담겨 있습니다. 실제 오류는 생성되지 않고 단지 부적절한 결과를 제공합니다. – CheeseCoder
논리적 오류 –