Java方法返回的int不能与另一个int进行比较(Android Studio)
首先,这些是整数,而不是整数。 我想从另一个类获得一个变量,并把它比作一个值,像这样:Java方法返回的int不能与另一个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");
}
所以,我想从boardAdap类pieceNumber变量,并检查它是否等于32。如果是这样,它会在登录控制台时打印这些东西。
的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;
}
此遍历称为广场中的枚举,并且递增pieceNumberIncrement如果该值不为 “NONE”。 然而,当我运行此,输出是:
32
int comparison worked
那么,为什么如果条件失败,第二,如果getPieceNumber()返回一个int?当我使用Integer包装器时,它也失败,或者将pieceNumberMethod转换为一个字符串,然后转换为Integer和其他方法。
另外,我是否应该改变getPieceNumber()来更新pieceNumber来代替,并且只引用那个?
此外,如果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");
}
尝试调用方法一次。
希望工程!
问题是比较字符串。你需要的equals(“无”)
String none = new String("NONE");
int count = 32;
System.out.println(count);
for (int i = 0; i < 64; i++) {
if (none != "NONE") {
count++;
}
}
System.out.println(count);
如果你运行该代码就会在第二个电话,尽管“无”
这是不好的做法是的,但在这个例子中它返回正确的数字,并不会导致问题。 –
打印的信息是第一个不是第二个。你能否检查一下你是否在循环中碰到增量? – efekctive
是的,这是行不通的,输出是32,96。 –
感谢您快速回答子牙,我会检查这是否有效,如果它工作:) –
是的,这是问题,我忘了重新计数之前,将pieceNumberIncrement重置为0。再次感谢! –
欢迎:) –