2011-03-04 28 views
2

我試圖限制變量是零以上使用if語句和下面的代碼只是運行猶如if語句不存在:安卓:如果在方法聲明中不工作

private void startGame(int h1, int h2, int w1, int w2) { 
     this.h1 = h1; 
     this.w1 = w1; 
     this.h2 = h2; 
     this.w2 = w2; 
     Intent intent = new Intent(this, Game.class); 
     if((h1 > 0) || (w1 > 0) || (h2 > 0) || (w2 > 0)){ 
      startActivity(intent); 
      } 
     else { 
      finish(); 
     } 

} 
+4

你試圖達到什麼邏輯? (只有一個變量必須是「零以上」,還是應該全部是?) – 2011-03-04 23:45:12

+1

打印並檢查「h1,w1,h2,w2」的值。 – Mahesh 2011-03-04 23:45:51

+0

我不完全理解你的問題,如果所有變量都是正數,你能告訴我哪個函數startActivity或完成了你想要調用嗎?當我正在閱讀代碼時,我會說如果任何變量都是肯定的,那麼startActivity就會運行,這看起來並不是你想要的。 – 2011-03-04 23:47:13

回答

7

一您的變量大於0.

如果「if h1大於零或w1大於零或......」或更簡單地「如果h1,w1,h2,w2中的任何一個是大於零「。

我想你想要的是AND。您希望它讀取「如果h1大於零且w1大於零...」

「and」的運算符是&&,而不是||

if(h1 > 0 && w1 > 0 && h2 > 0 && w2 > 0){ 

此外,@馬赫什的評論是正確的 - 如果你有一個邏輯語句時,沒有表現你怎麼認爲它應該,打印出在語句中使用的變量和「運行」的說法在你頭上的邏輯與這些變量。它很快會變得很清楚什麼是錯的。

2

我想你的意思是使用邏輯AND(& &),而不是OR(||)

你貼什麼會通過檢查當任何一個尺寸大於零。

private void startGame(int h1, int h2, int w1, int w2) { 
    this.h1 = h1; 
    this.w1 = w1; 
    this.h2 = h2; 
    this.w2 = w2; 
    Intent intent = new Intent(this, Game.class); 
    if((h1 > 0) && (w1 > 0) && (h2 > 0) && (w2 > 0)){ 
     startActivity(intent); 
     } 
    else { 
     finish(); 
    } 

}

這將確保所有尺寸均大於零。