Java 如何在数组中洗牌问题

Java 如何在数组中洗牌问题,java,android,arrays,Java,Android,Arrays,我是Android编程新手,我创建了一个测验应用程序,现在我想把我数组中的问题随机排成一行。我有一个主要活动和一个问题库我有3个数组一个用于提问,一个用于提问,一个用于答案。。现在我想将问题行随机化。你怎么能这么做?我尝试了几种只使用一个数组的方法,但它充满了错误。。。我怎么做?你能用我的方法变量名给我发送解决方案吗 问题库: private String mChoices[][] = { {"1993", "1986", "1967"}, {"-260", "-

我是Android编程新手,我创建了一个测验应用程序,现在我想把我数组中的问题随机排成一行。我有一个主要活动和一个问题库我有3个数组一个用于提问,一个用于提问,一个用于答案。。现在我想将问题行随机化。你怎么能这么做?我尝试了几种只使用一个数组的方法,但它充满了错误。。。我怎么做?你能用我的方法变量名给我发送解决方案吗

问题库:

private String mChoices[][] = {
        {"1993", "1986", "1967"},
        {"-260", "-272,15", "279,15"},
        {"a plant","The active substance of marijuana" , "a spider"},
        {"6", "10","8"},
        {"12","15","10"},
        {"Uranus","Neptune","Saturn"},
        {"HCl","NaCl","CO"},
        {"John F. Kennedy", "Richard Nixon","James A. Garfield"},
        {"Canada","Denmark", "Greenland is an own state?"},
        {"12","20","14"},
        {"10","12","14"},
        {"not","never","now"},
        {"Leningrad","Wolgograd","Dimitrijgrad"}
};


private String mCorrectAnswers[] = {"1993", "-272,15", "The active substance of marijuana", "8", "12","Uranus","NaCl","John F. Kennedy","Denmark","12","14","not","Wolgograd"};



public String getQuestion (int a){
    String question = mQuestions[a];
    return question;
}

public String getChoice1 (int a){
    String choice0 = mChoices[a][0];
    return choice0;
}

public String getChoice2 (int a) {
    String choice1 = mChoices[a][1];
    return choice1;
}

public String getChoice3 (int a) {
    String choice2 = mChoices [a] [2];
    return choice2;
}

public String getCorrectAnswer (int a){
    String answer = mCorrectAnswers [a];
    return answer;


}


public int getlength() {


    int length = 13;
    return length;
}
主要活动:

package amapps.impossiblequiz;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class QuizActivity extends AppCompatActivity {

    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;
    private Toolbar mToolbar;
    private MenuItem menuItem;
    private Intent in;

    private QuestionLibrary mQuestionLibrary = new QuestionLibrary();

    private TextView mScoreView;
    private TextView mQuestionView;
    private Button mButtonChoice1;
    private Button mButtonChoice2;
    private Button mButtonChoice3;

    private String mAnswer;
    private int mScore = 0;
    private int mQuestionNumber = 0;






    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);


        mToolbar = (Toolbar) findViewById(R.id.nav_action);

        setSupportActionBar(mToolbar);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);

        mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true); //Able to see the Navigation Burger "Button"


        NavigationView mNavigationView = (NavigationView) findViewById(R.id.nv1);
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem){
                switch (menuItem.getItemId()){
                    case(R.id.nav_stats):
                        Intent accountActivity = new Intent(getApplicationContext(),Menu2.class);
                        startActivity(accountActivity);
                }
                return true;
            }
        });



        mScoreView = (TextView) findViewById(R.id.score);
        mQuestionView = (TextView) findViewById(R.id.question);
        mButtonChoice1 = (Button) findViewById(R.id.choice1);
        mButtonChoice2 = (Button) findViewById(R.id.choice2);
        mButtonChoice3 = (Button) findViewById(R.id.choice3);


        updateQuestion();

        //Start of Button Listener1
        mButtonChoice1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //My logic for Button goes in here

                if (mButtonChoice1.getText() == mAnswer) {
                    mScore = mScore + 1;
                    updateScore(mScore);
                    updateQuestion();

                    //This line of code is optional...
                    Toast.makeText(QuizActivity.this, "Correct", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(QuizActivity.this, "Wrong... Try again!", Toast.LENGTH_SHORT).show();
                    mScore = 0;
                    updateScore(mScore);
                    updateQuestion();

                }
            }


        });
        //End of Button Listener1

        //Start of Button Listener2
        mButtonChoice2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //My logic for Button goes in here

                if (mButtonChoice2.getText() == mAnswer) {
                    mScore = mScore + 1;
                    updateScore(mScore);
                    updateQuestion();

                    //This line of code is optional...
                    Toast.makeText(QuizActivity.this, "Correct", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(QuizActivity.this, "Oh... wrong your score is 0", Toast.LENGTH_SHORT).show();
                    mScore = 0;
                    updateScore(mScore);
                    updateQuestion();

                }
            }


        });
        //End of Button Listener2

        //Start of Button Listener3
        mButtonChoice3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //My logic for Button goes in here

                if (mButtonChoice3.getText() == mAnswer) {
                    mScore = mScore + 1;
                    updateScore(mScore);
                    updateQuestion();

                    //This line of code is optional...
                    Toast.makeText(QuizActivity.this, "Correct", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(QuizActivity.this, "Come on, that was not so hard...", Toast.LENGTH_SHORT).show();
                    mScore = 0;
                    updateScore(mScore);
                    updateQuestion();

                }
            }


        });
        //End of Button Listener3

    }

    private void updateQuestion() {

        if (mQuestionNumber < mQuestionLibrary.getlength()) {
            mQuestionView.setText(mQuestionLibrary.getQuestion(mQuestionNumber));
            mButtonChoice1.setText(mQuestionLibrary.getChoice1(mQuestionNumber));
            mButtonChoice2.setText(mQuestionLibrary.getChoice2(mQuestionNumber));
            mButtonChoice3.setText(mQuestionLibrary.getChoice3(mQuestionNumber));

            mAnswer = mQuestionLibrary.getCorrectAnswer(mQuestionNumber);
            mQuestionNumber++;
        } else Toast.makeText(QuizActivity.this, "Last Question!", Toast.LENGTH_SHORT).show();

    }
    private void updateScore(int point) {
        mScoreView.setText("" + mScore);

    }


    @Override //Makes that the "Burger" Item, shows the Drawer if someone clicks on the simbol
    public boolean onOptionsItemSelected(MenuItem item) {
        if (mToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
包amapps.impossiblequick;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.design.widget.NavigationView;
导入android.support.v4.widget.DrawerLayout;
导入android.support.v7.app.ActionBarDrawerToggle;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
公共类QuizaActivity扩展了AppCompative活动{
私人抽屉布局mDrawerLayout;
私人行动bardrawertoggle mtogle;
私有工具栏mToolbar;
私有菜单项菜单项菜单项;
私人意图;
private QuestionLibrary mQuestionLibrary=新建QuestionLibrary();
私有文本视图mScoreView;
私有文本视图mQuestionView;
专用按钮MButonchoice1;
专用按钮MButonchoice2;
私人按钮MButonchoice3;
私人字符串mAnswer;
私有int mScore=0;
私有int mQuestionNumber=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u测验);
mToolbar=(工具栏)findViewById(R.id.nav_动作);
设置支持操作栏(mToolbar);
mDrawerLayout=(抽屉布局)findViewById(R.id.DroperLayout);
mToggle=newactionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
mDrawerLayout.addDrawerListener(MTOGLE);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);//能够看到导航汉堡“按钮”
NavigationView mNavigationView=(NavigationView)findViewById(R.id.nv1);
mNavigationView.setNavigationItemSelectedListener(新的NavigationView.OnNavigationItemSelectedListener(){
@凌驾
公共布尔值onNavigationItemSelected(MenuItem MenuItem){
开关(menuItem.getItemId()){
案例(R.id.nav_统计数据):
Intent accountActivity=newintent(getApplicationContext(),Menu2.class);
startActivity(accountActivity);
}
返回true;
}
});
mScoreView=(TextView)findViewById(R.id.score);
mQuestionView=(TextView)findViewById(R.id.question);
mButtonChoice1=(按钮)findViewById(R.id.choice1);
mButtonChoice2=(按钮)findViewById(R.id.choice2);
mButtonChoice3=(按钮)findViewById(R.id.choice3);
updateQuestion();
//开始按钮侦听器1
mButtonChoice1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//我的按钮逻辑在这里
if(mButtonChoice1.getText()==mAnswer){
mScore=mScore+1;
更新核心(mScore);
updateQuestion();
//这行代码是可选的。。。
Toast.makeText(quizaActivity.this,“Correct”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(QuizActivity.this,“错误…重试!”,Toast.LENGTH\u SHORT.show();
mScore=0;
更新核心(mScore);
updateQuestion();
}
}
});
//结束按钮侦听器1
//按钮监听器的开始2
mButtonChoice2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//我的按钮逻辑在这里
if(mButtonChoice2.getText()==mAnswer){
mScore=mScore+1;
更新核心(mScore);
updateQuestion();
//这行代码是可选的。。。
Toast.makeText(quizaActivity.this,“Correct”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(quizaActivity.this,“哦……错了,你的分数是0”,Toast.LENGTH\u SHORT.show();
mScore=0;
更新核心(mScore);
updateQuestion();
}
}
});
//结束按钮侦听器2
//开始按钮侦听器3
mButtonChoice3.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//我的按钮逻辑在这里
if(mButtonChoice3.getText()==mAnswer){
mScore=mScore+1;
更新核心(mScore);
updateQuestion();
//这行代码是可选的。。。
Toast.makeText(quizaActivity.this,“Correct”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(QuizActivity.this,“来吧,那没那么难…”,Toast.LENGTH\u SHORT.show();
mScore=0;
更新核心(mScore);
updateQuestion();
}
}
});
//结束按钮侦听器3
}
私有void updateQuestion(){
if(mQuestionNumberpublic class QuestionLibrary {

    private final String mChoices[][] = { /* ... */ };
    private final String mQuestions[] = { /* ... */ };
    private final String mCorrectAnswers[] = { /* ... */ };

    private final List<Integer> indexes = new ArrayList<>();

    public QuestionLibrary() {
        for (int i = 0; i < mQuestions.length; ++i)
            indexes.add(i);
    }

    private int index(int i) {
        return indexes.get(i);
    }

    public String getQuestion(int a) {
        return mQuestions[index(a)];
    }

    public String getChoice1(int a) {
        return mChoices[index(a)][0];
    }

    public String getChoice2(int a) {
        return mChoices[index(a)][1];
    }

    public String getChoice3(int a) {
        return mChoices[index(a)][2];
    }

    public String getCorrectAnswer(int a) {
        return mCorrectAnswers[index(a)];
    }

    public int getlength() {
        return mQuestions.length;
    }

    public void shuffle() {
        Collections.shuffle(indexes);
    }
}
QuestionLibrary q = new QuestionLibrary();
System.out.printf("Question:0 Choice:(%s, %s, %s) Answer:%s%n",
    q.getChoice1(0), q.getChoice2(0), q.getChoice3(0), q.getCorrectAnswer(0));
q.shuffle();
System.out.printf("Question:0 Choice:(%s, %s, %s) Answer:%s%n",
    q.getChoice1(0), q.getChoice2(0), q.getChoice3(0), q.getCorrectAnswer(0));
Question:0 Choice:(1993, 1986, 1967) Answer:1993
Question:0 Choice:(-260, -272,15, 279,15) Answer:-272,15