2

我正在尝试制作一个测验应用程序,因此有 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 也总是执行正确答案。

有谁知道可能会发生什么或更好的方法来做到这一点?

4

4 回答 4

3

您没有正确比较字符串。

当我们必须比较 String 对象引用时,使用 == 运算符。如果两个 String 变量指向内存中的同一个对象,则比较返回 true。否则,比较返回 false。请注意,'==' 运算符不会比较 String 对象中存在的文本内容。它只比较 2 个字符串指向的引用。

在这里阅读:http ://www.javabeginner.com/learn-java/java-string-comparison

于 2012-04-05T18:39:17.890 回答
2

您应该使用equalsString 方法进行字符串比较:

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();
    }
}
于 2012-04-05T18:39:27.630 回答
1

在 Java 中,您不能将字符串与==必须使用的字符串进行比较equals()

if (button1.getText().equals("Right Answer"))
于 2012-04-05T18:39:34.700 回答
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();
}
于 2012-04-05T18:41:05.983 回答