我正在尝试使用带阵列的4个按钮创建一个多项选择测验。我无法从按钮文本中获取变量
我的按钮text: buttonA: Obama, buttonB: Lincoln, buttonC: Washington, buttonD: Bush
正确答案是奥巴马(buttonA)
当我将答案行上的代码更改为answer = "Obama";
(注释行)时,它可以正常工作。但是,当我从gettext()
更改为buttonA text
时,它无效。
我从gettext()
检查了答案变量,它返回“”
请指教,谢谢
这是代码
package com.trivia;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MenuWho extends Activity {
private String keyanswer ,answer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutwho);
Button buttons[] = new Button[4];
buttons[0] = (Button)findViewById(R.id.buttonA);
buttons[1] = (Button)findViewById(R.id.buttonB);
buttons[2] = (Button)findViewById(R.id.buttonC);
buttons[3] = (Button)findViewById(R.id.buttonD);
keyanswer = "Obama";
answer = "";
}
public void cekanswer (View view) {
Button selectedbutton = (Button) view;
switch (selectedbutton.getId())
{
case R.id.buttonA:
//answer = "Obama";
answer = selectedbutton.getText().toString();
break;
case R.id.buttonB:
answer = (String) selectedbutton.getText();
break;
case R.id.buttonC:
answer = (String) selectedbutton.getText();
break;
case R.id.buttonD:
answer = (String) selectedbutton.getText();
break;
}
//cek answer
if (answer == keyanswer)
{
Toast.makeText(this,"Correct !", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this,"Wrong !", Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:1)
用户answer.equals(keyanswer)
。 Equals
检查strings
的数据,==
仅检查引用是否相同。
答案 1 :(得分:1)
使用Java中的字符串,仅使用==
查看引用是否相同。您必须使用方法.equals()
来查看字符串的实际数据是否相同。
这是关于这个主题的另一篇SO帖子 .equals() vs ==
Java文档..
因此,请特别针对您的答案,将行if (answer == keyanswer)
更改为if (answer.equals(keyanswer)){//do work}
答案 2 :(得分:1)
if (answer == keyanswer)
这是比较两个字符串的错误编程。你需要使用这个
if (answer.equals(keyanswer))
或
if(answer.equalsIgnoreCase(keyanswer))