randomInsert() не работает: индекс 10000 за пределами границ для длины 10000

Создав массив, нужно заполнить его случайными 10000 числами. Как исправить вот это:

class Bubble{
 public void randomInsert(long n) {
    for(int j=0; j<nElems; j++)
        n = (long)(java.lang.Math.random()*(nElems-1));
        a[nElems] = n;
        nElems++;
}}

Чтобы использовать тут:

class NewBubbleApp {
public static void main(String[] args) {
    int maxSize = 10000;
    Bubble bubarr = new Bubble(maxSize);
    bubarr.randomInsert();
    bubarr.display();}}

Вот весь код:

 class Bubble{
private long[] a;
private int nElems;

public Bubble(int nElems) {
    this.nElems = nElems;
    a = new long[nElems];
    nElems = 0;
}

public void randomInsert(long n) {
    for(int j=0; j<nElems; j++)
        n = (long)(java.lang.Math.random()*(nElems-1));
        a[nElems] = n;
        nElems++;}

public void display(){
    for(int j=0; j<nElems; j++)
        System.out.println(a[j] + " ");
        System.out.println(" ");}

public void bubbleSort() {
    int out, in;
    for(out = nElems-1; out>1; out--)
        for(in=0; in<out; in++)
            if(a[in+1]<a[in])
                swap(in, in+1);}

public void swap(int one, int two) {
    long temp = a[one];
    a[one] = a[two];
    a[two] = temp;}}

class NewBubbleApp {
public static void main(String[] args) {
    int maxSize = 10000;
    Bubble bubarr = new Bubble(maxSize);
    bubarr.randomInsert();
    bubarr.bubbleSort();
    bubarr.display();}}

Ответы (2 шт):

Автор решения: Aziz Umarov

У Вас зачем то есть инкремент nElems++ при этом не понятно чему равно начальное его значение и как используется j. Исправьте nElems и уберите инкремент.

class Bubble{
  public void randomInsert(long n) {
    for(int j=0; j<nElems; j++)
       n = (long)(java.lang.Math.random()*(nElems-1));
       a[j] = n;
       
  }}

А зачем вы обнуляете nElems в конструкторе.

→ Ссылка
Автор решения: MBo

Если я правильно понял, какая предполагалась логика:

public void randomInsert(long n) {    ///Зачем этот аргумент?
    for(int j=0; j<Сколько_вставлять_может_n?; j++) 
        a[j] = (long)(java.lang.Math.random()*Какой_диапазон); 
   nElem = Сколько_вставлять; 
}
→ Ссылка