2015-04-24 6 views
0

Я пытаюсь создать Integer [], который увеличивается на 10 для каждого цикла. Как только размер Integer [] установлен, я бы хотел, чтобы он заполнил массив случайными ints. Я могу увеличить размер массива, но значения, хранящиеся в нем, равны нулю. Для меня это означает, что массив правильно изменяет размер, но они не привязаны ни к чему. Я пытаюсь использовать double for-loop, при этом внутренний цикл присваивает случайные значения. Если есть лучший способ сделать это (что, я уверен, есть b/c мой не работает!) Не могли бы вы помочь?Изменение размера массива с произвольными номерами

это мое создание Int []

public class TimeComplexity { 

    Integer[] data; 

    public TimeComplexity() 
    { 
     Random random = new Random(); 

     for (int N = 1000; N <= 1000000; N *= 10) 
     { 
      N = random.nextInt(N); 
      data = new Integer[N]; 
      //checking to see if the random numbers were added. 
      //array size is okay but locations aren't taking a 
      //random number 
      System.out.println(Arrays.toString(data)); 

     } 

    } 

В случае, если вы заинтересованы в выходе за это мой основной класс. (Это не является частью вопроса, но если у вас есть предложения, я хотел бы их!)

public class TimeComplexityApp { 

    private static int MAXSIZE = 1000000; 
    private static int STARTSIZE = 1000; 

    public TimeComplexityApp() 
    { 
     // TODO Auto-generated constructor stub 
    } 

    public static void main(String[] args) { 

     TimeComplexity time = new TimeComplexity(); 
     System.out.println(time); 
     System.out.printf("%-6s %13s %13s\n\n\n","ARRAY","int","INTEGER"); 

     for (int N = STARTSIZE; N <= MAXSIZE; N *= 10) 
     { 
      double d = 1.0; 
      System.out.printf("\n%-6d %15.2f %15.2f\n", N, d, d); 
     } 
    } 

} 
+0

У вас на самом деле нет двойного цикла. Вам нужен внутренний цикл, который будет присваивать случайные числа каждому индексу. Вы оставили это при копировании кода или это ваш текущий код? –

+0

Это мой текущий код – Mick

+0

Тогда вам нужен еще один цикл, который выполняет итерацию и устанавливает значения. Вы удлинили длину, но вы никогда никому не назначаете. Похоже, что фрагмент кода @ControlAltDel - хороший пример того, что вы можете вставить в свой существующий цикл. –

ответ

1

В первом исходном коде, который показывает отсутствие инициализации элементов массива целых чисел.

данные = новое целое число [N]; только создает массив целых чисел размера N, отсутствие включает элементы в каждую ячейку массива.

Таким образом, нужно просто цикл для завершения каждого элемента или ячейки массива:

for (int i = 0; i <N; i ++) 
    data [i] = random.nextInt (N); 

Теперь этот массив является полным и не будет возвращать NULL по каждому пункту.

0

На каждой итерации цикла вашего, вы создаете новый массив случайной (INT размера) длину. Но вы никогда ничего не вкладываете в это. Правильный способ сделать это:

int[] vals = ...; 
for (int i = 0; i < end - start; i++) { 
    if (vals.length < i; i++) { 
    //1. create new larger int[] 
    //2. copy the old array into the new array 
    //3. vals = yourNewArray 
    } 
    vals[i] = random.nextInt(); 
} 
Смежные вопросы