2012-11-12 2 views
3

Мне нужно создать 3 экземпляра моего температурного класса. Я могу сделать это, набрав его три раза, но я уверен, что это не очень хороший способ сделать это. Следовательно, я искал в Интернете и нашел ArrayList.ArrayList в Java

Я не понимаю, как использовать ArrayList, чтобы он мог создавать экземпляры класса в цикле, и я хочу получить к нему доступ за пределами моего цикла.

Например прямо сейчас у меня есть

Temperature t1 = new Temperature(); 
t1.setDegrees(input.nextDouble()); 

Как я петля все это выше, так что я не придется вводить его в три раза. Я искал в Интернете примеры, но все, что я могу найти, это значения, которые уже хранятся в ArrayList, а не новые экземпляры, которые создаются и хранятся внутри ArrayList. Поэтому в основном это то, что я хочу сделать

Temperature t1 = new Temperature() 
for (3 loops) 
{ 

t1.setDegrees(user input) ; 
ArrayList (<< this is the part i need help on. How do i store the temperature here so i can access it outside the scope of the for loop) 
} 
+0

Ух, что? @Jayson Он не запрашивал двухмерные ... – ADTC

ответ

2
List<Temperature> temperatures = new ArrayList<Temperature>(); 
for (int i = 0; i < 3; ++i) { 
    Temperature t = new Temperature(); 
    t.setDegrees(user input) ; 
    temperatures.add(t); 
} 
1

Вы ищете ArrayList.add() метод и for loop:

List<Temprature> list = new ArrayList<Temprature>(); 
for (int i = 0; i < 3; i++) { 
    Temprature t = new Temprature(); 
    t.setDegrees(input.nextDouble()); 
    list.add(t); 
} 

Чтобы впоследствии получить элемент можно использовать ArrayList.get(), и если вам нужно перебирать все объекты, вы можете использовать for-each loop.

+0

Но я все еще не могу получить доступ к вновь созданному экземпляру температуры вне цикла, поскольку температура создается только внутри цикла for. область действия цикла заканчивается в фигурных скобках. Я хочу иметь возможность установить некоторый параметр для экземпляра типа t.setDegrees внутри класса, но получить доступ к этому параметру за пределами t.getDegrees –

+0

@SudeshBanskota: вы можете получить доступ ко всем из них из 'ArrayList' - в отличие от C++, объекты всегда создаются динамически («On heap») - и если у вас есть ссылка на них - вы можете получить к ним доступ. В этом случае у вас есть ссылка на объекты Temprature в вашем 'ArrayList', и вы можете получить их с помощью' list.get (1) ',' list.get (2) ', ... или по итерация 'ArrayList'. – amit

+0

Спасибо за помощь! –

1
List<Temparature> templist = new ArrayList<>(); 
    for(int i=0; i<3; i++){ 
    Temparature t = new Temparature(); 
    t.setDegrees(input.nextDouble()); 
    tempList.add(t); 
    } 

приведенный выше код будет создать 3 Temparature объектов в петлю и добавить их на каждой итерации.

check ArrayList API для его методов.

1
List<Temperature> temperatures = new ArrayList<Temperature>(); 
for (int i = 0; i < 3; ++i) { 
    Temperature t = new Temperature(); 
    t.setDegrees(userInput); 
    temperatures.add(t); 
} 
// here you go 
0
List<Temperature> temps= new ArrayList<Temperature>(); 

for (int i=0;i<3;i++){ 
    Temperature t = new Temperature() 
    t.setDegrees(user input) ; 
    temps.add(t) 
} 
System.out.println(temps); 
0

Имея ArrayList или даже массив температур не будет лучше память/скорость мудр, чем просто объявляя 3 температуры.

И, в зависимости от того, что вы пытаетесь сделать, вам, вероятно, лучше объявить их отдельно, чтобы вы могли ссылаться на них по имени.

Temperature fahrenheit = new Temperature(); 
Temperature celsius = new Temperature(); 

Таким образом, вы можете получить доступ к ним по имени, в то время как если бы они были в массиве вы должны помнить, какой из них был в какой позиции в массиве.

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