2017-07-29 27 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。 –