if 语句在 android 中无法正常工作

if statment not working properly in android

大家好,我是新手 android 我只想更改文本视图文本,如果计算值在 18 或 25 之间 我使用 if 语句但没有结果 有时如果我删除其中一个 > 它的工作但仅用于最大价值的任何想法

public class GB extends ActionBarActivity {
  ImageView im1;
  EditText mEditText1,mEditText2;
  TextView mTextView,m5;
  Button mButton;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_GB);
    im1 = (ImageView)findViewById(R.id.imageView1);
    mEditText1 = (EditText)findViewById(R.id.editText1);
    mEditText2 = (EditText)findViewById(R.id.editText2);
    mTextView = (TextView)findViewById(R.id.textView4);
    m5 = (TextView)findViewById(R.id.textView5);
    mButton = (Button)findViewById(R.id.button1);
    mButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        switch (v.getId()){
          case R.id.button1:
        }
        String word2 = mEditText2.getText().toString();
        String word = mEditText1.getText().toString();
        if (word.trim().equals("")){ 
          mEditText1.setError("Insert Hight");
        }
        else if (word2.trim().equals("")){
          mEditText2.setError("Insert Wight");
        } else{
          calculate();
        }
      }
    });
  }

  public void calculate(){
    Double value1 = Double.parseDouble(mEditText1.getText().toString());
    Double value2 = Double.parseDouble(mEditText2.getText().toString());
    Double calculatedValue = value1/(value2*value2)*10000;
    calculatedValue = Math.round(calculatedValue*10)/10.0d;
    mTextView.setText(calculatedValue.toString());
    if (mTextView.getText().toString().trim().length() <10 && mTextView.getText().toString().trim().length() >18) {
      im1.setBackgroundResource(R.drawable.s1);
      m5.setText("low");
    } else if (mTextView.getText().toString().trim().length() <18 && mTextView.getText().toString().trim().length() >25) {
      im1.setBackgroundResource(R.drawable.s3);
      m5.setText("Best");
    } else if (mTextView.getText().toString().trim().length() <25 && mTextView.getText().toString().trim().length() >100) {
      im1.setBackgroundResource(R.drawable.s3);
      m5.setText("over");
    }         
  }
}

如果你想检查一个值是否在一个区间内,你必须这样写:

if(myvalue > lowerbound && myvalue < upperbound )

以下代码可能会满足您的要求。

  public void calculate(){
    Double value1 = Double.parseDouble(mEditText1.getText().toString());
    Double value2 = Double.parseDouble(mEditText2.getText().toString());
    Double calculatedValue = value1/(value2*value2)*10000;
    calculatedValue = Math.round(calculatedValue*10)/10.0d;
    mTextView.setText(calculatedValue.toString());
    if (calculatedValue >= 10 && calculatedValue < 18) {
      im1.setBackgroundResource(R.drawable.s1);
      m5.setText("low");
    } else if (calculatedValue >= 18 && calculatedValue < 25) {
      im1.setBackgroundResource(R.drawable.s3);
      m5.setText("Best");
    } else if (calculatedValue >= 25 && calculatedValue < 100) {
      im1.setBackgroundResource(R.drawable.s3);
      m5.setText("over");
    }         
  }

整数值不能同时小于18和大于25。

而不是

if (mTextView.getText().toString().trim().length() <18 && mTextView.getText().toString().trim().length() >25)

如果您想检查 18 到 25 之间的值,请使用这个。

if (mTextView.getText().toString().trim().length() > 18 && mTextView.getText().toString().trim().length() < 25)
  1. 这里的 switch 语句没有用,您已经为按钮设置了点击侦听器,您再次尝试检查是否点击了同一个按钮。
  2. 最好检查输入的值是否为数字。
  3. 当您使用 if、else if 和 else 时 - 将只执行一个,将执行完全填充语句的一个,其余代码将不执行,例如查看以下:
   if( a > b){
     //show A is bigger than b;
     } else if ( a == b){
     // show A equals to b 
    } else{
    // b > a
     }

这里,

 if (word.trim().equals("")){//if this conditions works, code won't go to test else if or else statement. 
          mEditText1.setError("Insert Hight");
        }
        else if (word2.trim().equals("")){
          mEditText2.setError("Insert Wight");
        } else{
          calculate();
        }
  1. 您检查值的方式是错误的,该语句将始终为 false,如 1。您正在测试值是否 < 10,同时您正在测试值是否> 18,其中一个肯定是假的。

    if(mTextView.getText().toString().trim().length() <10 && mTextView.getText().toString().trim ().length() >18)