У меня есть проблема, упомянутая в заголовке.Я сделаю все возможное, чтобы вы поняли, что я пытаюсь сделать.Во-первых, чтобы подвести итог моих классов, я показал их ниже:
Classes
|___ Starter.java (main class)
|___ Line.java
|___ CrossSection.java
|___ SectionAssigner.java
В своем основном классе я создал переменные ArrayList, которые содержат объекты из Line , SectionAssigner и CrossSection классы:
public static void main(String[] args) {
ArrayList<Line> lines = new ArrayList<Line>();
ArrayList<Line> lineKeeper = new ArrayList<Line>();
ArrayList<CrossSection> crossSections = new ArrayList<CrossSection>();
ArrayList<SectionAssigner> sectionAssigners = new ArrayList<SectionAssigner>();
}
Конструктор класса SectionAssigner получает два параметра: ArrayList и CrossSection :
public SectionAssigner(ArrayList<Line> lineList, CrossSection crossSection){
this.lineList = lineList;
this.crossSection = crossSection;
}
Кроме того, SectionAssigner класс возвращает длины всех строк ( this.linelist ) с функцией getLinesLength () :
public ArrayList<Double> getLinesLength(){
for (int k=0; k<this.lineList.size(); k++) {
this.returnedIndex.add(this.lineList.get(k).getLength());
}
return this.returnedIndex;
}
В приведенных ниже строках кода в моем основном классе я спрашиваю пользователя, «какие линии и сечение вы хотите назначить для SectionAssigner?», Тогда я сохраняю выбор пользовательских линий в linekeeper переменная и индекс сечения в переменной crossSectionIndex .Затем с этими данными я создаю новую переменную из SectionAssigner , которая также вставляется в sectionAssigners ArrayList:
sectionAssigners.add(new SectionAssigner(lineKeeper, crossSections.get(crossSectionIndex)));
Наконец, я показываю пользователюкакие строки были назначены, какие разделы:
System.out.println("SectionAssigned" + counter + ": " + sectionAssigners.get(counter).getLinesLength() );
Эти коды и вещи, которые я пытаюсь сделать, могут быть трудно понять, поэтому я проиллюстрирую их ниже на примере:
Давайте скажему пользователя есть 6 строк с индексом
Line0
Line1
Line2
Line3
Line4
Line5
. После этого пользователь хочет выполнить назначение поперечного сечения, как показано ниже:
SectionAssign0: Line0, Line1
SectionAssign1: Line2, Line3, Line4, Line5
Так, в приведенном выше примере консоль должна показатьline0 и строка 1 в SectionAssign0;line2, line3, line4, line5 в SectionAssign1.Но консоль показывает, как показано ниже:
SectionAssign0: Line0, Line1, Line2, Line3, Line4, Line5
SectionAssign1: Line0, Line1, Line2, Line3, Line4, Line5
Я не знаю полностью использование ArrayList.Содержит ли элемент одного ArrayList в классе все объекты, созданные из этого класса?Или есть какая-то роковая ошибка, которую я совершил?