随机方法导致android编程为零和负错误:java.lang.IllegalArgumentException:n< = 0:-5

时间:2017-09-14 17:09:03

标签: android

我试图在最大值和最小值之间随机化我的项目但是得到n< = 0:-5的错误异常。这个我的android代码请帮忙。

 level1 = new Random();
        x1= level1.nextInt((9 - 1) + 1)+1;
        levelone.setText(Integer.toString(x1));

        level3 = new Random();
        x3= level3.nextInt((9 - 1) + 1)+1;
        levelthree.setText(Integer.toString(x3));

        level3 = new Random();
        v0= level3.nextInt((9 - 1) + 1)+1;

        v1=x3*v0;
        v2 = (v1/x1);

        level2 = new Random();
        x2= level2.nextInt((9 - (v2-1)) + 1)+(v2-1);
        leveltwo.setText(Integer.toString(x2));

。这是错误的一行。

x2= level2.nextInt((9 - (v2-1)) + 1)+(v2-1);

我的所有最大值和最小值都包含在内。

错误日志:

java.lang.RuntimeException: Unable to start activity ComponentInfo{munene.com.mathgame/munene.com.mathgame.MathLevel2Activity}: java.lang.IllegalArgumentException: n <= 0: -5
                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
                                                     at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                     at android.os.Looper.loop(Looper.java:136)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                     at java.lang.reflect.Method.invoke(Method.java:515)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                     at dalvik.system.NativeStart.main(Native Method)
                                                  Caused by: java.lang.IllegalArgumentException: n <= 0: -5
                                                     at java.util.Random.nextInt(Random.java:175)
                                                     at munene.com.mathgame.MathLevel2Activity.generateFormular07(MathLevel2Activity.java:501)
                                                     at munene.com.mathgame.MathLevel2Activity.onCreate(MathLevel2Activity.java:52)

1 个答案:

答案 0 :(得分:0)

以下是您的各种作业:

x1= level1.nextInt((9 - 1) + 1)+1;
x3= level3.nextInt((9 - 1) + 1)+1;
v0= level3.nextInt((9 - 1) + 1)+1;

这些变量(x1x3v0)中的每一个现在都包含1到9之间的值。

v1=x3*v0;

v1现在保持1到81之间的值(下限是1 * 1 = 1,上限是9 * 9 = 81)。

v2 = (v1/x1);

v2现在保持0到81之间的值(下限是1/9 = 0,上限是81/1 = 81)。

现在你称之为:

x2= level2.nextInt((9 - (v2-1)) + 1)+(v2-1);

重要的部分是nextInt((9 - (v2-1)) + 1)。由于v2可以是0到81之间的任何内容,因此可以是从nextInt(-70)nextInt(11)的任何内容。

来自Random.nextInt(int bound)的文档:

  

<强>参数

     

bound int:上限(不包括)。必须是积极的。

因此,您必须更改上次通话(您的作业x2),以确保您永远不会传递负数。