Я довольно новичок в программировании, и я не могу заставить это работать. Это сложно объяснить. Там в основном генератор частиц, который генерирует заданное количество частиц. Эти частицы должны взаимодействовать друг с другом, поэтому у всех них есть ArrayList со всеми частицами. Однако я не хочу, чтобы они взаимодействовали друг с другом, поэтому я хочу удалить объект из своего ArrayList, который является им самим. У класса хранения все еще есть все объекты в его собственном Arraylist. Проблема в том, что когда я пытаюсь позволить объектам удалить один объект из своего Arraylist, все объекты удаляются, и ArrayList сохраняющего объекта также становится пустым. Я знаю, что мне не нужно этого делать, но я действительно хочу знать, почему это не работает, и я думаю, что это работает чище, чем когда мне приходится пропускать один объект каждый раз, когда запускается взаимодействующая функция. Поскольку это довольно сложно описать, лучше просто взглянуть на код. код состоит только из кода, который имеет значение, и это упрощенная версия. Линия: l.remove (n); это линия, которая все портит.
G g;
void setup()
{size(1000, 600);
g = new G(10);
}
void draw()
{
background(255);
g.displayg();
text(g.g.size(), 200, 200);
}
первый класс, который будет храниться в классе g
class D
{
int n;
ArrayList<D> l = new ArrayList<D>();
D(int input)
{
this.n = input;
}
void seTup(ArrayList<D> input)
{
l = input;
l.remove(n); //if you delete this line, everything works
}
void display()
{
fill(0);
text(this.n, 100+ 10* n, 100);
}
}
и классе хранения
class G
{ int number;
ArrayList<D> g = new ArrayList<D>();
G(int inputnumber)
{this.number = inputnumber;
for(int i =0; i < number; i++)
{g.add(new D(i));
}
for(int i = g.size()-1; i>=0;i--)
{
D x = g.get(i);
x.seTup(g);
}
}
void displayg()
{
for(D i : g)
{//text(i.n, 100 + 5*i.n, 100);
i.display();
}
}
}