我试图在最大值和最小值之间随机化我的项目但是得到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)
答案 0 :(得分:0)
以下是您的各种作业:
x1= level1.nextInt((9 - 1) + 1)+1; x3= level3.nextInt((9 - 1) + 1)+1; v0= level3.nextInt((9 - 1) + 1)+1;
这些变量(x1
,x3
和v0
)中的每一个现在都包含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
),以确保您永远不会传递负数。