2012-04-05 136 views
2

我想製作一個測驗應用程序,所以有5個單選按鈕,可能的答案是,只有1個是正確的。然後有一個提交按鈕,它有一個onClick =「clickMethod」來處理提交。Android:單選按鈕無法正常工作的IF語句

我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()」作爲參數來烤麪包,它會打印「Right Answer」字符串,但由於某種原因,在IF語句內部它不起作用,而且即使在檢查時ELSE也會始終執行正確的答案。

有誰知道可能發生了什麼或更好的方法來做到這一點?

回答

2

您應該使用equals字符串的方法比較字符串:

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(); 
    } 
} 
+0

謝謝,這正是問題所在。 – 2012-04-05 18:41:50

3

您沒有正確比較字符串。

當我們必須比較字符串對象 引用時,使用==運算符。如果兩個字符串變量指向 內存中的同一對象,則比較返回true。否則,比較返回 錯誤。請注意,'=='運算符不會比較String對象中存在的 文本的內容。它僅比較2字符串指向的參考文獻 。

這裏閱讀:http://www.javabeginner.com/learn-java/java-string-comparison

+0

謝謝。我也會檢查那個網站。 – 2012-04-05 18:42:25

1

在Java中,你不能==比較字符串,你必須使用equals()

if (button1.getText().equals("Right Answer")) 
+0

非常感謝。 – 2012-04-05 18:42:42

1

如果你想比較對象我n 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(); 
}