Java 安卓测验-增加问题难度

Java 安卓测验-增加问题难度,java,android,Java,Android,我有一个android应用程序测试,目前每个游戏从总共500个问题中随机选择10个问题。我希望这10个问题按难度顺序出现,例如问题1是最简单的,而问题10是最难的。比如,想想《谁想成为百万富翁》中的游戏 这些问题作为JSON存储在外部文件中。每个问题都有一个从1到10的难度级别(“级别”)。下面是一个示例问题: {"itemId":"747AF1F8A59F7DD132CB08E","itemType":"BT_quizQuestion","Category":"Music","Level":3

我有一个android应用程序测试,目前每个游戏从总共500个问题中随机选择10个问题。我希望这10个问题按难度顺序出现,例如问题1是最简单的,而问题10是最难的。比如,想想《谁想成为百万富翁》中的游戏

这些问题作为JSON存储在外部文件中。每个问题都有一个从1到10的难度级别(“级别”)。下面是一个示例问题:

{"itemId":"747AF1F8A59F7DD132CB08E","itemType":"BT_quizQuestion","Category":"Music","Level":3,"questionText":"Bruce Springsteen is also known as ...","correctAnswerText":"The Boss","incorrectText1":"Prince of Darkness","incorrectText2":"God of Thunder","incorrectText3":"Old Pete"},
我目前随机选择10个问题的代码是:

//randomize questions from pool then grab "x" number for quiz
    if(questionPool.size() > 0 && (quizRandomizeQuestions.equals("1") || quizRandomizeQuestions.toUpperCase().equals("YES")  )){
        Collections.shuffle(questionPool);
        childItems = new ArrayList<BT_item>(); 
        for (int i = 0; i < questionPool.size(); i++){
            if(i < quizNumberOfQuestions){
                BT_item thisQuestion = questionPool.get(i);
                childItems.add(thisQuestion);
            }else{
                break;
            }
        }//end for each
    }else{
        //showAlert("No Questions?", "This quiz does not have any questions associated with it?");
    }

但是如何在每场游戏中添加1个难度等级为1、2、3、4、5、6、7、8、9和10的问题呢?

我试图用一些随机代码来帮助你,但有一个正确的想法(至少对我来说)

private static final int MAX_QUESTIONS=10;
列表问题列表=新的ArrayList();
对于(int i=0;i
显然,您应该有一个问题类,它在json文件中表示您的问题,并带有一个从中获取问题的方法


在开始游戏之前,你将把所有的问题保存在列表中,在游戏的中间没有必要对它们进行查询:

,而不是循环遍及问题池,回溯你需要的问题可能是一个更好的主意:

for(int count=0;count<10;count++){
然后结束第一个循环:

}

谢谢kittycat,喜欢你的想法,现在就开始测试。最初,thisQuestion被定义为BT_item thisQuestion=questionPool.get(i);但这不再适用于您的新代码。我应该如何以及在哪里重新定义这个问题?我将循环转换为增强的for循环。只需使用
item
而不是questionPool.get(i)。我更改了它,因为它使代码更容易阅读。你可以想象它是有效的。我刚刚更改了childItems。添加(此问题);至子项。添加(项);非常感谢kittycat。谢谢你的帮助。我相信你的解决方案与公认的答案非常相似。
for(int count=0;count<10;count++){
    for(BT_item item:questionPool){ // loop through all the items in the question pool
        String level = BT_strings.getJsonPropertyValue(item.getJsonObject(), "Level", "");
        if(level.equals(String.valueOf(count+1))) {
            childItems.add(item); // add 1 to count because it starts at 0, but levels start at 1
            break; // found a question, so break the inner loop (but not the outer one)
        }
    }
}