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

时间:2015-04-03 01:47:04

标签: java android if-statement trim

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

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

3 个答案:

答案 0 :(得分:2)

整数值不能小于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 :(得分:1)

如果要检查某个值是否在某个时间间隔内,则必须按如下所示进行编写:

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

答案 2 :(得分:1)

  1. 你的switch语句没用,你已经将click listener设置为button,你又想检查是否点击了同一个按钮。
  2. 如果您检查输入的值是否为数字,那将很好。
  3. 当你使用if时,否则if和else - 将执行一个且只有一个将执行完全填充语句将被执行并且其余代码将不会执行,例如,请查看以下内容:
  4.    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.您正在测试值是否&lt; 10,同时测试值是否为&gt; 18,其中一个肯定是假的。

      if(mTextView.getText()。toString()。trim()。length()&lt; 10&amp;&amp; mTextView.getText()。toString()。trim()。length()&gt; 18)