Java 方法返回无法与另一个 int 进行比较的 int (Android Studio)

标签 java android integer int

首先,这些是整数,而不是整数。 我想从另一个类获取一个变量并将其与一个值进行比较,如下所示:

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/

相关文章:

java - 使用枚举切换大小写会导致重复

java - 将不匹配的数据模型从 XML 转换为 JSON 的最佳实践

java - ConcurrentHashMap 和 Collections.synchronizedMap(Map) 有什么区别?

java - 在类(而不是 Activity )之间传递数据会导致空指针异常

android - 首次设置导航组件

php - 在PHP中将数字(1、2、3)转换为字符串(一、二、三)

python - 仅将一列从字符串转换为 int

java - 读取字节到 Netty 服务器

android - Anko 警报文本颜色显示错误

c++ - 8 个字节如何容纳 302 个十进制数字? (欧拉挑战16)