【问题标题】:Randomize array of questions while reading from text file android从文本文件android读取时随机化一系列问题
【发布时间】:2016-12-15 17:56:57
【问题描述】:

这是一个从文本文件加载问题的安卓测验应用程序代码 sn-p。 我想在每次下一次点击后随机播放问题和答案,那么我该如何实现随机功能? https://github.com/gitssk/quizfun/blob/master/src/ssk/quizfun/QuizFunActivity.java

https://github.com/gitssk/quizfun/blob/master/res/raw/questions.txt

 private void loadQuestions() throws Exception {
        try {
        InputStream questions = this.getBaseContext().getResources()
                .openRawResource(R.raw.questions);
        bReader = new BufferedReader(new InputStreamReader(questions));
        StringBuilder quesString = new StringBuilder();
        String aJsonLine = null;
        while ((aJsonLine = bReader.readLine()) != null) {
            quesString.append(aJsonLine);
        }
        Log.d(this.getClass().toString(), quesString.toString());
        JSONObject quesObj = new JSONObject(quesString.toString());
        quesList = quesObj.getJSONArray("Questions");
        Log.d(this.getClass().getName(),
                "Num Questions " + quesList.length());
        } catch (Exception e){

        } finally {
            try {
                bReader.close();
            } catch (Exception e) {
                Log.e("", e.getMessage().toString(), e.getCause());
            }

        }


    }







https://github.com/gitssk/quizfun/blob/master/src/ssk/quizfun/QuizFunActivity.java

【问题讨论】:

  • 你可以使用 Collections.shuffle 随机播放
  • 你能给我举个例子吗
  • Collections.shuffle JSONArray?这甚至可能吗?
  • 你可以看看Aleadam's solution。

标签: android arrays random arc4random


【解决方案1】:

我将避免发布太多代码,因为我认为您应该自己尝试。真的没有那么难。不过我会给你一个方法。

你有quesList = quesObj.getJSONArray("Questions");。所以quesList 是JSONArray 的问题列表。你想洗牌。只需这样做:

  1. 获取quesList 数组的长度。我们就叫它len吧。
  2. 创建一个名为 quesOrder 的简单数组列表,其中包含整数 0 to len。

    List<Integer> quesOrder = new ArrayList<>();
    for (int i = 0; i <= len; i++)
    {
     quesOrder.add(i);
    }
    

一旦你有了quesOrder 数组。只需执行Collections.shuffle(quesOrder);。现在,当您从 quesList 数组中收到问题时,只需从 quesOrder 列表中获取索引即可。你将有一个随机选择。为方便起见,将其放在一个函数中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多