2016-05-17 2 views
-1

Actuellement dans le processus de création d'un jeu d'échecs, Lors de la création du code pour 'CheckMate', j'ai rencontré un problème où l'instruction if ne s'est pas exécutée, même si toutes les conditions furent rencontrés.Toutes les conditions pour l'instruction If rencontrée, mais elle n'est pas exécutée

if (boardCopy[x][y] != null) 
{ 
    System.out.print(boardCopy[x][y].getColour() + " == " + turn.charAt(0)+" && "+ boardCopy[x][y].getName().substring(0,2)+" == ki && Checkmate == "+ CheckMate[x][y]); 
    if (boardCopy[x][y].getColour() == turn.charAt(0) && boardCopy[x][y].getName().substring(0,2) == "ki" && CheckMate[x][y]) 
    { 
     System.out.println(turn + "'s King is in Check"); 
     check = true; 
    } 
System.out.println(" | Check = "+check); 
} 

La sortie du Code (la partie importante, car il était dans une boucle, il a été répété avec de légères variations à plusieurs reprises

W == W && ki == ki && Checkmate == true | Check = false 

Toutes les conditions sont remplies mais le code n'est pas en cours d'exécution Pensées? (Tous les types de variables sont corrects, aucune faute d'orthographe, W désigne la couleur de la pièce, ki est les deux premières lettres du nom de la pièce ('king'), checkmate est un tableau booléen contenant un emplacement être «attaqué» par une pièce ennemie.)

+0

Notez que sur votre dernière condition, vous avez une affectation, pas un test d'égalité. De plus, il n'y a pas besoin de 'if (x == true || y == false)', c'est juste 'if (x ||! Y)'. –

+0

Vous imprimez donc certaines des valeurs, ce qui est bon pour le débogage, mais encore mieux, essayez d'imprimer les valeurs booléennes que vous vérifiez. Par exemple, essayez d'imprimer 'boardCopy [x] [y] .getName(). Substring (0,2) ==" ki "'. Le résultat peut être faux, même si la chaîne est égale à "ki". –

Répondre

0

S'il vous plaît notic e, les chaînes ne peuvent pas être comparées en utilisant "==" en réalité, String (a) == String (b) -> False. Vous devez faire boardCopy [x] [y] .getColour(). Equals (turn.charAt (0))