Java Mine Sweeper プログラムを作成しています。これまでのところ、カスケードと公開を除いてすべてが順調に進んでいます。StackOverFlowError が発生し続けます。誰かが私を見て助けてくれますか?ありがとう!
public static char[][]revealCell(int xbox, int ybox, char blankboard [] [], char RevealedBoard [][]){
if( RevealedBoard[ybox][xbox]== 'B'){
blankboard[ybox][xbox]= 'B';
return blankboard;
}else if( RevealedBoard[ybox][xbox]== '1'){
blankboard[ybox][xbox]= '1';
return blankboard;
}
else if( RevealedBoard[ybox][xbox]== '2'){
blankboard[ybox][xbox]= '2';
return blankboard;
}else{
blankboard[ybox][xbox]= '-';
if( xbox== 0){ // left of the grid
if(ybox==0){
blankboard= revealCell(xbox+1, ybox, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox+1, blankboard, RevealedBoard);
blankboard= revealCell(xbox+1, ybox+1, blankboard, RevealedBoard);
return blankboard;
}else if( ybox== 7){
blankboard= revealCell(xbox+1, ybox, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox+1, ybox-1, blankboard, RevealedBoard);
return blankboard;
}else{
blankboard= revealCell(xbox+1, ybox, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox +1, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox+1, blankboard, RevealedBoard);
blankboard= revealCell(xbox+1, ybox+1, blankboard, RevealedBoard);
return blankboard;
}
}else if(xbox== 7){// right of the grid
blankboard= revealCell(xbox-1, ybox, blankboard, RevealedBoard);
if(ybox== 7){
blankboard= revealCell(xbox, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox-1, blankboard, RevealedBoard);
return blankboard;
}else if( ybox==0){
blankboard= revealCell(xbox, ybox+1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox+1, blankboard, RevealedBoard);
return blankboard;
}else{
blankboard= revealCell(xbox-1, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox+1, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox+1, blankboard, RevealedBoard);
return blankboard;
}
}else{
if(ybox== 0){
blankboard= revealCell(xbox-1, ybox, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox+1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox+1, blankboard, RevealedBoard);
return blankboard;
}else if( ybox==7){
blankboard= revealCell(xbox-1, ybox, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox-1, blankboard, RevealedBoard);
return blankboard;
}else{
blankboard= revealCell(xbox, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox+1, ybox-1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox+1, blankboard, RevealedBoard);
blankboard= revealCell(xbox, ybox+1, blankboard, RevealedBoard);
blankboard= revealCell(xbox-1, ybox, blankboard, RevealedBoard);
blankboard= revealCell(xbox+1, ybox, blankboard, RevealedBoard);
blankboard= revealCell(xbox+1, ybox+1, blankboard, RevealedBoard);
}
}
}
return blankboard;
}
}
RevealCell は私のメソッドであり、学校での実際のクラスでは再帰を使用する必要があります。これが私たちがすべきことだと思いましたが、エラーが発生しています。