比较两个textview Java/Android的结果



我正在制作一个非常简单的android数学游戏。但我不能管理比较两个textview,让用户知道如果他们计算正确与否??

我没有正确地比较它们,因为我的if/else语句只给我其他输出??

public class PlayActivity extends AppCompatActivity {
EditText number1;
EditText number2;
TextView result;
Button addNumbers;
TextView equalW;
TextView equalL;
TextView generate;

double num1,num2,sum;
Random r = new Random();
public View.OnClickListener listener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        generate = (TextView)findViewById(R.id.textViewGenerate);
        int generated = r.nextInt(101);
        generate.setText(Integer.toString(generated));
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_play);
    number1 = (EditText)findViewById(R.id.editTextNumber1);
    number2 = (EditText)findViewById(R.id.editTextNumber2);
    result = (TextView)findViewById(R.id.textViewSum);
    addNumbers = (Button)findViewById(R.id.buttonAdd);
    equalL = (TextView)findViewById(R.id.textViewLose);
    equalW = (TextView)findViewById(R.id.textViewWin);
    Button buttonGenerate = (Button)findViewById(R.id.buttonGenerate);
    buttonGenerate.setOnClickListener(listener);

    addNumbers.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            num1 = Double.parseDouble(number1.getText().toString());
            num2 = Double.parseDouble(number2.getText().toString());
            sum = num1 + num2;
            result.setText(Double.toString(sum));
            if (generate.getText().toString().equals(result))
            {
                equalW.setText("Answer is correct");
            }
            else {
                equalL.setText("lose");
            }
        }
    });
}

你有一个明显的问题和另一个潜伏的问题。

明显的一个:你必须比较StringString,而不是TextView。因此用if (generate.getText().toString().equals(result.getText().toString()))代替if (generate.getText().toString().equals(result))

潜伏者:仔细看,resultsum设置为String, generategenerated设置为String。sum数据类型为doublegenerate数据类型为int。比较两者会产生问题。这就像比较"10".equals("10.0")。这很容易出错。您需要将这两个字段设置为一个通用的数据类型。

将if condition更改为:

if (generate.getText().toString().equals(result.getText().toString()))
   {
   }

因为result是视图,所以调用getText方法比较字符串值

result是textview所以你必须写

如果(generate.getText () .toString () .equals (result.getText () .toString))

最新更新