0

如果计数器为 20 或更高,我希望输出为绿色,如果低于 20,我希望输出为红色。这是我到目前为止的代码,它不起作用。

  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);
        }
    });
4

3 回答 3

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);
}
于 2013-10-12T22:21:36.850 回答
0

如果您尝试更改名为 display 的文本视图的颜色,则需要切换:

display.setText(Color.GREEN); 

display.setTextColor(Color.GREEN);

你也可以让你的else if只是一个else.

于 2013-10-12T22:20:55.397 回答
0

出色地,

如评论中所述,您正在尝试将文本设置为Color.GREEN表示绿色的常量整数,而您应该像在 RED 案例中那样做

display.setTextColor(Color.GREEN);

在另一件事上,您不应该else if在该声明中使用。

既然你第一次if问,我的计数器是 20 或更多,请将颜色更改为绿色,如果低于,则更改为红色。

如果您愿意,您只有 2 个案例与您的变量的整个“频谱”重叠。

你应该使用ifandelse在这种情况下

        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语句来检查非法值可能是一种好习惯(特别是如果它是来自用户的输入)。甚至仅用于完整性检查或错误处理和打印。

于 2013-10-12T22:23:00.767 回答