否则如果android无法正常工作

时间:2013-10-12 22:14:35

标签: android if-statement

如果计数器为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);
        }
    });

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

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

display.setText(Color.GREEN); 

display.setTextColor(Color.GREEN);

您也可以将else if改为else

答案 2 :(得分: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语句来检查非法值(特别是如果它是来自用户的输入)可能是一种好习惯。甚至只是为了进行健全性检查,或者错误处理和打印。