2013-10-12 58 views
0

我希望輸出爲綠色,如果計數器是20或以上,紅色如果是20以下。這是我迄今的代碼,它不工作。否則如果android不工作

add1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter = counter += 1; 
      if (counter >= 20) { 
       display.setText(Color.GREEN); 
       //display.setText("" + counter); 
      } 
      else if (counter < 20) { 
       display.setTextColor(Color.RED); 
       //display.setText("" + counter); 
      } 
      display.setText("" + counter); 
     } 
    }); 
    sub1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      counter = counter -= 1; 
      if (counter >= 20) { 
       display.setText(Color.GREEN); 
       //display.setText("" + counter); 
      } 
      else if (counter < 20){ 
       display.setTextColor(Color.RED); 
       //display.setText("" + counter); 
      } 
      display.setText("" + counter); 
     } 
    }); 
+0

您的意思是:'display.setTextColor(Color.GREEN);'而不是'display.setText(Color.GREEN);'? – kamituel

+0

窮人如果/其他結構 – Blackbelt

回答

2

夫婦與你的代碼問題:

  • 使用counter += 1代替counter = counter += 1。相同的減法。
  • 避免重複代碼
  • 使用setTextColor()而不是setText()

add1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     counter += 1; 
     updateDisplay(); 
    } 
}); 

sub1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     counter -= 1; 
     updateDisplay(); 
    } 
}); 

而且有這樣的方法某處:

void updateDisplay() { 
    display.setTextColor(counter < 20 ? Color.RED : Color.GREEN); 
    display.setText("" + counter); 
} 
+0

好吧,我第一次通讀時錯過了櫃檯問題。 – Peter

+0

@彼得 - 我錯過了,一開始。 – kamituel

+0

謝謝大家的時間和意見。我對此非常感興趣,試圖通過幾個教程來教導自己,而不是在這些論壇上濫用其他知識。我非常感謝幫助 – user2869238

0

如果你想改變的TextView稱爲顯示你需要切換顏色:

display.setText(Color.GREEN); 

display.setTextColor(Color.GREEN); 

而且你也許可以讓你else if只是一個else

0

好,

正如在評論中提到,你正試圖將文本設置爲Color.GREEN這是一個常數代表綠色的整數,而你應該像在RED案例中那樣做

display.setTextColor(Color.GREEN); 

另一方面,您不應該在該陳述中使用else if

自從您的第一個if問,我的計數器是20或更多,將顏色更改爲綠色,並且如果它在下面,則更改爲紅色。

如果您願意,您只有2種情況會覆蓋變量的整個「頻譜」。

您應該使用ifelse在這種情況下,如果你有更多的情況下

 counter = counter += 1; 
     if (counter >= 20) { 
      display.setTextColor(Color.GREEN); 
      //display.setText("" + counter); 
     } 
     else { // not 20 or above, meaning < 20 
      display.setTextColor(Color.RED); 
      //display.setText("" + counter); 
     } 
     display.setText("" + counter); 

else if將是有益的,例如

 counter = counter += 1; 
     if (counter >= 20) { 
      display.setText(Color.GREEN); 
      //display.setText("" + counter); 
     } 
     else if (counter < 20 && counter >= 10) { // counter is between 10 and 20, not including 20 
      display.setTextColor(Color.RED); 
      //display.setText("" + counter); 
     } 
     else { // under 10, not including 10 
      display.setTextColor(Color.WHITE); 
      //display.setText("" + counter); 
     display.setText("" + counter); 

這可能是很好的做法,嘗試始終有一個else語句來檢查非法值(特別是如果它是來自用戶的輸入)。甚至僅用於完整性檢查或錯誤處理和打印。

相關問題