我正在尝试编写简单的代码,允许用户在一个活动中选择随机推荐的最大数量,并在另一个活动中使用它。 (分钟是1)
我成功地将活动A中的int变量调用到活动B,但是当我尝试在随机推荐中使用它时,应用程序崩溃了。
这里我要求int:
Intent intent = getIntent();
highNum = intent.getIntExtra("highNum", 0);
并随机输入:
Random random = new Random();
mainNum = random.nextInt(highNum) + 1;
我已经检查过int真的等于高于defualt的数字 - 0。
这是我厚的是堆栈流程的重要部分:
Caused by: java.lang.IllegalArgumentException: n <= 0: 0 at java.util.Random.nextInt(Random.java:182) at com.appstudio.shirdn.sevenboom.MainActivity.randomNumber(MainActivity.java:148) at com.appstudio.shirdn.sevenboom.MainActivity.onCreate(MainActivity.java:40)
第148行是我设置mainNum
的地方,第40行是onCreate
我要求随机类的类。
谢谢!
答案 0 :(得分:0)
堆栈跟踪告诉您传入Random.nextInt()
的数字实际为0.以下是Android平台API级别23的实际代码行:
public int nextInt(int n) {
if (n <= 0) {
throw new IllegalArgumentException("n <= 0: " + n);
}
...
}
您可以看到消息正在将n的值插入到异常错误消息中。这对应于你的highNum值。
在将highNum传递给此方法之前检查它的值。
答案 1 :(得分:0)
此异常是因为您试图生成一个随机数,但您没有验证作为参数**传递的绑定 :
这里:
mainNum = random.nextInt(highNum) + 1;
恰好是变量 highNum 必须为正
解决方案:
在将值传递给nextInt方法之前验证变量highNum:
做一些简单的事情:
if (highNum > 0) {
mainNum = random.nextInt(highNum) + 1;
}
如果您需要,请查看官方Documentation:
参数:绑定上限(不包括)。必须是积极的。