主要课程:
public class ECONAPP2 {
static Scanner input= new Scanner(System.in);
static int score = 0;
static ArrayList<Integer> usedArray = new ArrayList<Integer>();
public static void main(String[] args){
app();
arrayContents();
}
public static void arrayContents() {
usedArray.add(2);
usedArray.add(1);
}
app()方法:
public static void app() {
Random generator = new Random ();
int randomNumber = generator.nextInt(usedArray.size());
System.out.println(randomNumber);
if (randomNumber == 2) {
score();
question2();
usedArray.remove(2);
app();
}
if (randomNumber == 1) {
score();
question1();
usedArray.remove(1);
app();
}
收到此错误:
Exception in thread "main" java.lang.IllegalArgumentException: n must be positive
at java.util.Random.nextInt(Random.java:250)
at ECONAPP2.app(ECONAPP2.java:65)
at ECONAPP2.main(ECONAPP2.java:10)
无法解决这意味着什么以及n代表什么?
答案 0 :(得分:6)
在这一行
int randomNumber = generator.nextInt(usedArray.size());
您正在尝试生成随机数。
但是你有空的usedArray,所以它返回0.你不能生成范围0到0 exlusive的随机数,所以它抛出异常。该值必须为1或更高。
注意文档:“0(含)与指定值(不包括)之间的值”,例如generator.nextInt(1)
在所有调用中返回0,generator.nextInt(2)
返回0或1 ...
答案 1 :(得分:1)
n
表示Random#nextInt(int n)方法的参数。参数必须是正整数。在您的示例中,数组的大小可能为0
,从而导致异常。
答案 2 :(得分:0)
您想要更改主方法中调用方法的顺序。试试这个:
public static void main(String[] args){
arrayContents();
app();
}
这种方式当您调用app()
时,您的ArrayList中包含项目。