Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Работа с ArrayList


Автор: andrew1ee 31.3.2015, 00:19
Есть такой код:
Код

public static void main(String[] args) {
Random random = new Random();
int n = random.nextInt(4);
switch(n){
case 0: Class1 obj1 ((int)(Math.random()*10);
case 1: Class2 obj2 ((int)(Math.random()*10);
case 2: Class3 obj3 ((int)(Math.random()*10);
case 3: Class4 obj4 ((int)(Math.random()*10);
}
ArrayList <Class>array = new ArrayList <>()
//нужно добавить сгенерированные объекты в массив неизвестного размера
}

Автор: AntonSaburov 31.3.2015, 15:55
Честно говоря - код странный. Разве он может быть скомпилирован ? И где break в конце switch case ?
И вопрос не понятен - что конкретно надо ?

Автор: andrew1ee 31.3.2015, 16:04
Если создать объекты вручную, и добавить в массив, то компилируется . 
Нужно рандомно создать объекты с рандомными данными, и записать в массив неизвестного размера.

Автор: AntonSaburov 31.3.2015, 16:11
На форуме люди помогают добровольно и желательно давать им информацию в нормальном виде.

Где тогда Class1, Class2, Calss3, Class4 ?

И эта строка может компилироваться ?

Class1 obj1 ((int)(Math.random()*10);

И break где ?

А это что ?
ArrayList <Class>array = new ArrayList <>()

Фиг с точкой с запятой, но туда можно будет только Class положить. Как я понял нужно-то obj1, obj2 туда запихнуть. Но это невозможно при такой записи.
Этот код в этом виде не может быть скомпилирован, а знаит Вы предлагаете за Вас сделать еще массу работы. Что не есть гуд. Я не ворчу и не выпендриваюсь - просто вопрос крайне неудачно сформулирован.

Автор: andrew1ee 31.3.2015, 16:35
Хорошо, попробую объяснить.
Есть например главный класс Class, от которого наследуются Class1, Class2, Class3, Class4. Классы реализованы. Нужно создать объекты obj1 и т.д., и поместить в массив ArrayList типа Class. 
Предложенный код не закончен, это просто видение как это можно реализовать.

Автор: Pawl 5.4.2015, 10:36
Для начала так: 
Код

Class1 obj1 ((int)(Math.random()*10)
 объекты в java не создаются в принципе. Надо так:
Код

Class1 obj1 = new Class1((int)(Math.random()*10);

т. е. вам надо в Class1 определить конструктор для соответствующего поля. А в ArrayList эти объекты добавлять так:
Код

array.add(obj1);

А вообще согласен, 
Цитата

   вопрос крайне неудачно сформулирован
   


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Rabota-s-ArrayList-id5519be40ae2015000a8b4567#findElement_E7045_5520e610ae2015744d170203_0

Автор: temik911 12.5.2015, 00:15
Возможно ты хотел увидеть нечто подобное.

Код

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

class Class {
    int numb;
    public Class(int numb) {
        this.numb = numb;
    }
}

class Class1 extends Class {
    public Class1(int numb) {
        super(numb);
    }
}

class Class2 extends Class {
    public Class2(int numb) {
        super(numb);
    }
}

class Class3 extends Class {
    public Class3(int numb) {
        super(numb);
    }
}

class Class4 extends Class {
    public Class4(int numb) {
        super(numb);
    }
}

public class Main {
    public static void main(String[] arg) {
        List<Class> array = new ArrayList<Class>();
        Random random = new Random();
        int n = random.nextInt(4);
        switch (n) {
            case 0:
                array.add(new Class1((int)(Math.random()*10)));
                break;
            case 1:
                array.add(new Class2((int)(Math.random()*10)));
                break;
            case 2:
                array.add(new Class3((int)(Math.random()*10)));
                break;
            case 3:
                array.add(new Class4((int)(Math.random()*10)));
                break;
        }
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)