Illegal argument exception: n must be positive
10,337
Solution 1
In this line
int randomNumber = generator.nextInt(usedArray.size());
you are trying to generate random number.
However you have empty usedArray, so it returns 0. You cant generate random number in range 0 to 0 exlusive, so it throws exception. The value must be 1 or higher.
Note documentation : "value between 0 (inclusive) and the specified value (exclusive)", so for example generator.nextInt(1)
return 0 on all calls, generator.nextInt(2)
returns 0 or 1...
Solution 2
n
represents the parameter of the Random#nextInt(int n) method. The parameter must be a positive integer. In your example, the size of the array could be 0
, thus resulting in the exception.
Author by
Leo Rickayzen
Updated on June 04, 2022Comments
-
Leo Rickayzen almost 2 years
main class:
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() method:
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(); }
getting this error:
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)
can't work out what this means and what n is representative of ?