J'essaie de comprendre pourquoi mon programme imprime la même instruction à plusieurs reprises. Je suis capable de faire fonctionner cette méthode correctement quand je mets de bonnes valeurs, mais j'ai une autre instruction mise en place pour attraper les sélections invalides. Quand mon instruction else s'exécute, elle imprime infiniment et la boucle while ne commence jamais. Je ne peux pas comprendre. Je vais coller toute la méthode, mais en gras la zone à problème. J'espère que ceci est clair.Alors que la boucle est bloquée en boucle infinie
public static int[][] placeCheese(int [][] gameBoard, String Player1Name)
{
Scanner console = new Scanner(System.in);
int turnTaker = 0;
int validRow = 0;
int validCol = 0;
int RowIndex = -1;
int ColIndex = -1;
while(turnTaker == 0)
{
while(validRow == 0)
{
System.out.println(Player1Name + ", please place your cheese by choosing a row, or choose -1 to exit.");
RowIndex = console.nextInt() -1;
if(RowIndex < gameBoard.length && RowIndex >=0)
{
validRow++;
}
else if(RowIndex == -2)
{
System.out.println("Thanks for playing, " + Player1Name + " has forfeited!");
System.exit(0);
}
}
while(validCol == 0){
System.out.println(Player1Name + ", please place your cheese by choosing a column, or choose -1 to exit.");
ColIndex = console.nextInt() -1;
if(ColIndex < gameBoard.length && ColIndex >=0)
{
validCol++;
}
else if(RowIndex == -2)
{
System.out.println("Thanks for playing, " + Player1Name + " has forfeited!");
System.exit(0);
}
}
if(gameBoard[RowIndex][ColIndex] == 0)
{
gameBoard[RowIndex][ColIndex] = 1;
turnTaker++;
numPieces1--;
}
else
{
System.out.println("this space is already occupied, please choose again.");
}
return gameBoard;
}
S'il vous plaît essayer de formater le code en quelque chose de plus lisible .. – nfechner
Gah J'étais en train de l'édition et il ne m'a pas permis de le sauvegarder. –
Que voyez-vous si vous déboguez quand il est entré dans une boucle infinie? Cet outil est susceptible de vous aider à résoudre le problème car c'est ce à quoi il sert. –