TransWikia.com

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

Stack Overflow на русском Asked by phoenix92 on December 23, 2021

Создав массив, нужно заполнить его случайными 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 Answers

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

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

Answered by MBo on December 23, 2021

У Вас зачем то есть инкремент 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 в конструкторе.

Answered by Aziz Umarov on December 23, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP