Tout d'abord, ce sont des entiers, pas des entiers. Je veux obtenir une variable d'une autre classe et le comparer à une valeur, comme suit:La méthode Java renvoie int qui ne peut pas être comparé à un autre int (Android Studio)
Log.v("xx", "" + boardAdap.getPieceNumber());
int pieceNumberInt = boardAdap.pieceNumber;
if (pieceNumberInt == 32) {
Log.v("xx", "int comparison worked");
}
int pieceNumberMethod = boardAdap.getPieceNumber();
if (pieceNumberMethod == 32) {
Log.v("xx", "method comparison worked");
}
Alors, je veux obtenir la variable pieceNumber de la classe boardAdap, et vérifier si elle est égale à 32. Si c'est le cas, il imprime les choses dans Log in the console.
La méthode boardAdap:
int pieceNumber;
int pieceNumberIncrement;
public int getPieceNumber() {
for (int i = 0; i < 64; i++) {
if (board.getPiece(Square.squareAt(i)).name() != "NONE") {
this.pieceNumberIncrement++;
}
}
this.pieceNumber = pieceNumberIncrement;
return pieceNumber;
}
Ce par un ENUM itère appelé la place, et incrémente pieceNumberIncrement si la valeur est "NONE". Cependant, quand je lance cela, la sortie est:
32
int comparison worked
Alors, pourquoi la seconde si la condition échoue, si getPieceNumber() retourne un int? Il échoue également lorsque j'utilise un wrapper Integer ou convertit pieceNumberMethod en une chaîne puis en Integer et d'autres méthodes.
De même, devrais-je changer getPieceNumber() pour simplement mettre à jour le numéro de pièce à la place, et référence seulement cela?
De plus, si pieceNumberMethod est utilisé dans une boucle comme:
for (int i = 0; i < pieceNumberMethod; i++) {
}
La boucle ne sera jamais arrêter.
Merci!
Merci pour la réponse rapide Ziya, je vais vérifier si cela fonctionne un peu et accepter si cela fonctionne :) –
Oui, c'était le problème, j'ai oublié de réinitialiser pieceNumberIncrement à 0 avant de compter à nouveau. Merci encore! –
Vous êtes les bienvenus :) –