我正在尝试制作一个测验应用程序,因此有5个单选按钮可能有答案,只有1个是正确的。然后是一个提交按钮,它有一个onClick =“clickMethod”来处理提交。
我的clickMethod如下所示:
public void clickMethod(View v){
RadioGroup group1 = (RadioGroup) findViewById(R.id.radioGroup1);
int selected = group1.getCheckedRadioButtonId();
RadioButton button1 = (RadioButton) findViewById(selected);
if (button1.getText()=="Right Answer")
Toast.makeText(this,"Correct!",Toast.LENGTH_SHORT).show();
else
Toast.makeText(this,"Incorrect.",Toast.LENGTH_SHORT).show();
}
然而,无论如何,我无法让IF声明发挥作用。如果我尝试做吐司 “button1.getText()”作为参数,它会打印“正确答案”字符串,但由于某种原因,在IF语句中它不起作用,即使我检查了正确的答案,ELSE也会一直执行。
有谁知道可能会发生什么或更好的方法吗?
答案 0 :(得分:3)
您没有正确比较字符串。
当我们必须比较String对象时,使用==运算符 引用。如果两个String变量指向同一个对象 内存,比较返回true。否则,比较返回 假。请注意,'=='运算符不会比较内容 String对象中存在的文本。它只比较参考文献 2个字符串指向。
请在此处阅读:http://www.javabeginner.com/learn-java/java-string-comparison
答案 1 :(得分:2)
您应该使用equals
String方法进行字符串比较:
public void clickMethod(View v){
RadioGroup group1 = (RadioGroup) findViewById(R.id.radioGroup1);
int selected = group1.getCheckedRadioButtonId();
RadioButton button1 = (RadioButton) findViewById(selected);
if ("Right Answer".equals(button1.getText())) {
Toast.makeText(this,"Correct!",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this,"Incorrect.",Toast.LENGTH_SHORT).show();
}
}
答案 2 :(得分:1)
在Java中,您无法将字符串与==
进行比较,必须使用equals()
:
if (button1.getText().equals("Right Answer"))
答案 3 :(得分:1)
如果要比较Java中的对象,则必须使用equals()方法而不是==运算符 ..
if (button1.getText().toString().equals("Right Answer")) {
Toast.makeText(this,"Correct!",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this,"Incorrect.",Toast.LENGTH_SHORT).show();
}