android中如何保证其中一个选择题答案是正确的?
How to guarantee one of the multiple choice answers is correct in android?
我正在尝试创建多项选择数学题。我设法创建了 4 个随机答案,但我不确定如何输入正确答案。它必须是选项 1、2、3 或 4,并且应该是随机的。
我的java代码:
public class MainActivity extends AppCompatActivity{
private boolean correct;
private String questionTxt, option1String, option2String, option3String, option4String;
private int answer;
TextView option1Text, option2Text, option3Text, option4Text;
int r = (int) (Math.random() * (4 - 1)) + 1;
public void correctAnswer()
{
int first = (int)(Math.random() * 10);
int second = (int)(Math.random() * 10);
answer = first + second;
questionTxt = first + " + " + second + " = ?";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
/*ImageView rocketImage = (ImageView) findViewById(R.id.img_animation);
rocketImage.setBackgroundResource(R.drawable.greencartooncar);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();*/
TextView questionText = (TextView)findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
if (option1String.equals(option2String)||option1String.equals(option3String)||option1String.equals(option4String)
||option2String.equals(option3String)||option2String.equals(option4String)||option3String.equals(option4String))
{
noSameAnswer();
}
}
public int wrongAnswer()
{
return (int)(Math.random() * 10 + Math.random() * 10);
}
public void onClick3(View v) {
if (option3String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
public void onClick1(View v) {
if (option1String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
public void onClick2(View v) {
if (option2String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
public void onClick4(View v) {
if (option4String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
}
一些不需要的方法被删掉了。
int r 字段是一个从 1 到 4 的随机数,但我不知道如何使用它来使正确答案转到选项 1、2、3 或 4。
我希望将正确答案设置为选项(随机数)文本。
private int fetchCorrectAnswer() {
int correctAnswer = 4;
int option = new Random().nextInt(2); // outputs either 0 or 1
//if option is 1 which is randomly genereted, correctAnswer will be 4.
//if option is 0,then correctAnswer will be wither 1 or 2 or 3 which is also randomly generated
if(option == 0){
//if 0, then it should be between 1/2/3 i.e min = 1, max = 3
correctAnswer = (new Random().nextInt(max - min + 1)) + 1; // +1 because 0-2 as 1-3
}
return correctAnswer;
}
如果我答对了你的问题,你想在某个选项中随机放置正确的答案。
您可以使用以下方法来达到同样的效果。
private String[] makeOptions(int correctAns) {
String [] ansStrins = new String[4];
// for (int i=0;i<ansStrins.length;i++){
// System.out.println("Option "+i+ ": "+ansStrins[i]);
//
// }
int randomPos = (new Random().nextInt())%4;
ansStrins[randomPos]=correctAns+"";
for (int i=0;i<4;i++){
int randomAns = (int)(Math.random() * 10 + Math.random() * 10);
if(ansStrins[i]==null){
ansStrins[i]=randomAns+"";
}
}
return ansStrins;
}
现在使用该选项数组。
我正在尝试创建多项选择数学题。我设法创建了 4 个随机答案,但我不确定如何输入正确答案。它必须是选项 1、2、3 或 4,并且应该是随机的。
我的java代码:
public class MainActivity extends AppCompatActivity{
private boolean correct;
private String questionTxt, option1String, option2String, option3String, option4String;
private int answer;
TextView option1Text, option2Text, option3Text, option4Text;
int r = (int) (Math.random() * (4 - 1)) + 1;
public void correctAnswer()
{
int first = (int)(Math.random() * 10);
int second = (int)(Math.random() * 10);
answer = first + second;
questionTxt = first + " + " + second + " = ?";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
/*ImageView rocketImage = (ImageView) findViewById(R.id.img_animation);
rocketImage.setBackgroundResource(R.drawable.greencartooncar);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();*/
TextView questionText = (TextView)findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
if (option1String.equals(option2String)||option1String.equals(option3String)||option1String.equals(option4String)
||option2String.equals(option3String)||option2String.equals(option4String)||option3String.equals(option4String))
{
noSameAnswer();
}
}
public int wrongAnswer()
{
return (int)(Math.random() * 10 + Math.random() * 10);
}
public void onClick3(View v) {
if (option3String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
public void onClick1(View v) {
if (option1String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
public void onClick2(View v) {
if (option2String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
public void onClick4(View v) {
if (option4String.equals(Integer.toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
option1Text = (TextView)findViewById(R.id.option1);
option1Text.setText(wrongAnswer() + "");
option2Text = (TextView)findViewById(R.id.option2);
option2Text.setText(wrongAnswer() + "");
option3Text = (TextView)findViewById(R.id.option3);
option3Text.setText(wrongAnswer() + "");
option4Text = (TextView)findViewById(R.id.option4);
option4Text.setText(wrongAnswer() + "");
setString();
noSameAnswer();
}
}
}
一些不需要的方法被删掉了。 int r 字段是一个从 1 到 4 的随机数,但我不知道如何使用它来使正确答案转到选项 1、2、3 或 4。 我希望将正确答案设置为选项(随机数)文本。
private int fetchCorrectAnswer() {
int correctAnswer = 4;
int option = new Random().nextInt(2); // outputs either 0 or 1
//if option is 1 which is randomly genereted, correctAnswer will be 4.
//if option is 0,then correctAnswer will be wither 1 or 2 or 3 which is also randomly generated
if(option == 0){
//if 0, then it should be between 1/2/3 i.e min = 1, max = 3
correctAnswer = (new Random().nextInt(max - min + 1)) + 1; // +1 because 0-2 as 1-3
}
return correctAnswer;
}
如果我答对了你的问题,你想在某个选项中随机放置正确的答案。
您可以使用以下方法来达到同样的效果。
private String[] makeOptions(int correctAns) {
String [] ansStrins = new String[4];
// for (int i=0;i<ansStrins.length;i++){
// System.out.println("Option "+i+ ": "+ansStrins[i]);
//
// }
int randomPos = (new Random().nextInt())%4;
ansStrins[randomPos]=correctAns+"";
for (int i=0;i<4;i++){
int randomAns = (int)(Math.random() * 10 + Math.random() * 10);
if(ansStrins[i]==null){
ansStrins[i]=randomAns+"";
}
}
return ansStrins;
}
现在使用该选项数组。