你好我刚刚在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");
}
}
}
答案 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)
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();
}
您检查值的方式是错误的,语句将始终为false,如1.您正在测试值是否&lt; 10,同时测试值是否为&gt; 18,其中一个肯定是假的。
if(mTextView.getText()。toString()。trim()。length()&lt; 10&amp;&amp; mTextView.getText()。toString()。trim()。length()&gt; 18)