首先,这些是整数,而不是整数。 我想从另一个类获取一个变量并将其与一个值进行比较,如下所示:
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");
}
所以,我想从boardAdap类中获取pieceNumber变量,并检查它是否等于32。如果是,它会在控制台中打印Log中的内容。
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;
}
这会迭代一个名为 Square 的枚举,如果该值不为“NONE”,则递增pieceNumberIncrement。 但是,当我运行它时,输出是:
32
int comparison worked
那么,如果 getPieceNumber() 返回一个 int,为什么第二个 if 条件会失败?当我使用整数包装器,或将pieceNumberMethod转换为字符串,然后转换为整数以及其他方法时,它也会失败。
此外,我是否应该更改 getPieceNumber() 以仅更新pieceNumber,并仅引用它?
此外,如果在 for 循环中使用pieceNumberMethod,例如:
for (int i = 0; i < pieceNumberMethod; i++) {
}
for 循环永远不会停止。
谢谢!
最佳答案
您基本上调用了 getPieceNumber 两次,因此在第二次调用中数字会发生变化。
int pieceNumberMethod = boardAdap.getPieceNumber();
Log.v("xx", "" + pieceNumberMethod);
int pieceNumberInt = boardAdap.pieceNumber;
if (pieceNumberInt == 32) {
Log.v("xx", "int comparison worked");
}
if (pieceNumberMethod == 32) {
Log.v("xx", "method comparison worked");
}
尝试调用一次方法。
希望有效!
关于Java 方法返回无法与另一个 int 进行比较的 int (Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45389702/