2017-07-29 21 views
0

首先,这些是整数,而不是整数。 我想从另一个类获得一个变量,并把它比作一个值,像这样: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循环将永远不会停止。

谢谢!

回答

1

你基本上调用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"); 
} 

尝试调用方法一次。
希望工程!

+0

感谢您快速回答子牙,我会检查这是否有效,如果它工作:) –

+0

是的,这是问题,我忘了重新计数之前,将pieceNumberIncrement重置为0。再次感谢! –

+0

欢迎:) –

1

问题是比较字符串。你需要的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); 

如果你运行该代码就会在第二个电话,尽管“无”

+0

这是不好的做法是的,但在这个例子中它返回正确的数字,并不会导致问题。 –

+0

打印的信息是第一个不是第二个。你能否检查一下你是否在循环中碰到增量? – efekctive

+0

是的,这是行不通的,输出是32,96。 –