比较两个整数在Android

时间:2017-07-05 11:20:09

标签: java android arraylist compare

我有一个方法必须比较一个整数和一个Arraylist,如果整数上的数字在arraylist上,我收到一个假。如果整数不在arraylist上,我会收到一个真实的。

我需要这个,因为我正在制作一个测验游戏,对BBDD有一些问题而且我不能两次显示相同的问题。此问题分为三类:E,I和A.我必须展示五个E问题,然后五个问题,然后五个A问题。

因此,我必须在不重复的情况下展示问题,并且每个类别中都有5个问题。我制作这种方法,但我不知道为什么它会重复一些问题。

唯一正确的是类别问题。我总是有5个问题,然后是5个问题和至少5个问题。

告诉我问题是否在ArrayList上的方法:

private boolean checkRandom()
{
    for(int i = 0; i < listRandom.size(); i++)
    {
        if(questionPosition == listRandom.get(i))
        {
            return false;
        }
    }

    return true;
}

我也尝试使用“等于”,但我的结果相同。

检查问题是否在正确的类别中并且之前未显示的方法:

private void loadPhase() {

    if (numQuestion < 15)
    {
        r = new Random();
        questionPosition = r.nextInt(listQuestions.size());

        if(numQuestion < 5)
        {
            while(!listPhase.get(questionPosition).equals("E") && (!listPhase.get(questionPosition).equals("E")|| !checkRandom()))
            {
                r = new Random();
                questionPosition = r.nextInt(listQuestions.size());
            }
        }
        else if(numQuestion > 4 && numQuestion < 10)
        {
            while(!listPhase.get(questionPosition).equals("I") && (!listPhase.get(questionPosition).equals("I")|| !checkRandom()))
            {
                r = new Random();
                questionPosition = r.nextInt(listQuestions.size());
            }
        }
        else if(numQuestion > 9)
        {
            while(!listPhase.get(questionPosition).equals("A") && (!listPhase.get(questionPosition).equals("A")|| !checkRandom()))
            {
                r = new Random();
                questionPosition = r.nextInt(listQuestions.size());
            }
        }

        listRandom.add(questionPosition);

        header4questions.setText(listQuestions.get(questionPosition));

        answer1.setText(listAnswers.get(questionPosition * 4));
        answer2.setText(listAnswers.get((questionPosition * 4) + 1));
        answer3.setText(listAnswers.get((questionPosition * 4) + 2));
        answer4.setText(listAnswers.get((questionPosition * 4) + 3));

        numQuestion++;
    }
    else {
        Toast.makeText(getApplicationContext(), "You have finished the quiz!", Toast.LENGTH_SHORT).show();

        uploadPoints();
    }
}

所以,我所拥有的是关于正确类别的所有问题,但它重复了这些问题,我不知道为什么。

任何人都可以帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

将您的回报替换为以下

private boolean checkRandom()
{
    for(int i = 0; i < listRandom.size(); i++)
    {
        if(questionPosition == listRandom.get(i))
        {
            return true;
        }
    }

    return false;
}

答案 1 :(得分:0)

尽管将ArrayList转换为HashSet有效地删除了重复项,但如果您需要保留广告订单,我建议您使用此变体

list is some List of Strings
Set < String > s = new LinkedHashSet < > (list);

然后,如果您需要返回List引用,则可以再次使用转换构造函数。

答案参考:https://stackoverflow.com/a/204004/8252521

用户回答:https://stackoverflow.com/users/27565/abahgat

答案 2 :(得分:0)

我解决了!我必须像这样改变while条件:

(1)