如何在不知道问题总数的情况下随机更新问题数据库中的textView

时间:2015-04-08 02:35:31

标签: java android random textview

我有一个flashcard应用程序应该从用户提供的数据库中显示随机问题(因此我们没有问题的项目总数)。我使用了一个参数z,它是运行时项目数的计数,我使用了Random()方法,但每次它给我一个IllegalArgumentException。这是我的代码如何计算参数z:

while (resId1 != 0) {

        resId1 = getApplicationContext().getResources().getIdentifier(
                fquest + num1, "string", getPackageName());
        z = z + 1;
        num1 = num1 + 1;
    }

此代码工作正常,但下面的代码包含异常我希望你的帮助,如果你不介意,这里的代码不好:

Random r1 = new Random(z);
    num1 = r1.nextInt(z);
    num1 = num1 + 1;

    resId1 = getApplicationContext().getResources().getIdentifier(
            fquest + num1, "string", getPackageName());
    quest1 = getResources().getString(resId1);
    q.setText(quest1);

IllegalArgumentException恰好在这一行:

num1 = r1.nextInt(z);

请任何帮助。

2 个答案:

答案 0 :(得分:0)

根据文档,如果传入一个值< = 0,r1.nextInt(value)将抛出IllegalArgumentException。你检查了z的值吗?

答案 1 :(得分:0)

Random(long seed)需要很长的参数,而nextInt(int bound)需要一个int参数。您将变量z传递给它们,并且由于异常发生在nextInt上,因此z必须是long值。使用num1 = r1.nextInt((int)z);将其强制转换为int,或者创建一个表示上限的新整数值。