2015-06-29 3 views
0

Число создаваемых объектов зависит от пользовательского ввода, поэтому как я могу объявить следующее с циклом for в Java?Объявление нескольких объектов с разными именами

MicroStep darkCalibMicro0 = new MicroStep(); 
    MicroStep darkCalibMicro1 = new MicroStep(); 
    MicroStep darkCalibMicro2 = new MicroStep(); 
    MicroStep darkCalibMicro3 = new MicroStep(); 
    MicroStep darkCalibMicro4 = new MicroStep(); 
    MicroStep darkCalibMicro5 = new MicroStep(); 

Эти данные не могут быть жестко запрограммированы, они должны быть сгенерированы в зависимости от размера, который вводит пользователь.

+0

Вам нужен список '' Список или массив 'MicroStep []'. –

+0

Два варианта, доступные в java для хранения коллекции элементов, - это [массив] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html) (когда длина известна и постоянна) и ['ArrayList'] (https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) (если длина неизвестна или изменена). – clcto

ответ

2

Ok. После того, как я прочитал неправильно вопрос (мой английский не самый лучший):

Что вы хотите сделать это ArrayList, вы можете получить, что сделано так:

Допустим, введенную пользователем, 40.

Integer userInput = 40; 
ArrayList<MicroStep> microStepList = new ArrayList<>(); 
for (int i = 0; i < userInput; i++) { 
microStepList.add(new MicroStep()); 
} 

Таким образом, вы получите список с размером 40, с 40 MicroStep на нем. Затем, если вы хотите получить доступ к любому из этих объектов, вы можете:

MicroStep m = microStepList.get(i); 
+0

'map.put (3, новый MicroStep())', а не 'list.set (3, новый MicroStep())' или 'array [3] = new MicroStep()'? –

+1

«HashMap» является излишним, если вам нужен только список элементов, а не ассоциация значения key =>. – clcto

+1

Ну, может быть. Он сказал: «Они не могут быть жестко закодированы, их нужно создавать на основе того размера, который вводит пользователь». Я предполагаю, что он имел в виду, что пользователь может ввести 0, 500, 324, и это будет хорошо. –

1

@ Yayotrón ответ правильный. Здесь есть один Java 8 способов сделать это:

List<MicroStep> list = 
    IntStream.range(0, userInput) 
    .mapToObj(i -> new MicroStep()) 
    .collect(Collectors.toList()); 
Смежные вопросы