我正在制作一个非常简单的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");
}
}
});
}
你有一个明显的问题和另一个潜伏的问题。
明显的一个:你必须比较String
和String
,而不是TextView
。因此用if (generate.getText().toString().equals(result.getText().toString()))
代替if (generate.getText().toString().equals(result))
潜伏者:仔细看,result
中sum
设置为String, generate
中generated
设置为String。sum
数据类型为double, generate
数据类型为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))