2014-09-04 3 views
0

Я хочу создать массив размером n, где n определяется переменными цикла, но я не знаю, как предварительно вычислить размер массива. Можно предположить, что начать < конец и шаг> 0.Рассчитать размер массива

int start; // Initialized by user 
int end; // Initialized by user 
int step; // Initialized by user 

int size = ? // What is the formula for the size ? 

Object[] array = new Object[size]; 
int index=0; 

for(int i=start; i<=end; i+=step){ 
    array[index++]=new Object(); 
} 

Я мог бы просто использовать список, а затем скопировать элементы в массив, но, похоже, объезд.

Это не: (конец - начало)/размер

ответ

0
int size = ceiling(float(end - start + 1)/size); 

Вам нужно добавить 1, потому что вы используете i <= end, поэтому он должен включать в себя конечное значение.

+0

начало = 3, конец = 7, шаг = 2. Итерирует 3 раза, но (7-3 + 1)/2 = 2. Я не думаю, что добавление функции потолка решит проблему, не так ли? – user

+0

Да, я думаю, что «потолок» прав. – Barmar

Смежные вопросы