2015-05-07 2 views
-2

Привет, я не уверен, как я отношусь к привязке объектов к моему арраисту.Ссылка на объекты на arraylist

Класс, где им объявляя ArrayList:

Любая помощь будет высоко ценится

+1

Можете ли вы объяснить словами, что вы пытаетесь сделать здесь? Студенческий студент = новый Студент (Student.name); studentList.add (student.Student (name, tmaMark)); ' – Shahzeb

+0

Когда вы создаете нового ученика, вы должны писать: новый ученик (« Боб »); то есть, передавая имя, которое вы хотите использовать. Вы не можете ссылаться на имя переменной класса, которое определяется как «private String name». –

ответ

1

Прежде всего name не является статичным, так что вы не можете обращайтесь к нему как Student.name только экземпляр студента может получить к нему доступ, если это public. Теперь вы хотите построить Student, чем вы должны передать name ученика в конструкторе. Вы можете объявить getterandsetter методы для ваших Student атрибутов.

Кроме того, ArrayList.add можно использовать, чтобы добавить Students в ваш list, и вам лучше не добавлять студентов в конструктор, чтобы использовать этот метод для использования этого метода.

НАПРИМЕР:

Student student = new Student("NewStudent"); 
System.out.println("Name of student :" +student.getName()); 
studentList.add(student); 
+1

Большое спасибо! Я постоянно путаюсь с Java, но это на самом деле действительно упростило ситуацию и заставило меня понять, насколько плохи мои предыдущие попытки! – erpel

+0

@erpel your welcm. :) –

1

Относно:

public TutorGroup() { 
    super(); 
    Student student = new Student(Student.name); // this makes no sense 
    studentList.add(student.Student(name, tmaMark)); 
} 

Я не уверен, что вы пытаетесь сделать с new Student(Student.name) так неясно, что этот код пытается сделать, но независимо, компилятор прав - он не должен существовать и поэтому избавиться от него.

Удалить этот конструктор TutorGroup и переделать его. Как вы это сделаете, это будет зависеть от того, где ваша TutorGroup будет получать объекты Student. Если они собираются упаковываться в ArrayList, а затем передаются, то дайте конструктору TutorGroup параметр ArrayList<Student>, а при вызове класса перейдите в список. Если вы будете добавлять студентов по одному, а затем сделать конструктор простым (или избавиться от него), и дать метод addStudent классу TutorGroup:

public void addStudent(Student s) { 
    studentList.add(s); 
} 
0

В вашем TutorGroup конструктора вы пытаетесь передать значение в имени переменного в классе Student которой вы наклоняете доступ, потому что 1. переменного именем является частным, так только члены класса имеют к нему доступ. и 2. Это еще не имеет значения, поскольку это то, что вы пытаетесь передать в конструктор Student.

Что вы должны сделать, это передать строковый литерал в ваш конструктор Student, например: new Student («Jamie»), тогда он будет сохранен в переменной имени в вашем классе Student, и если вам нужно получить доступ к имени позже, добавьте открытый метод в вашем классе Student, который возвращает значение в вашей переменной имени.

0

В вашем коде есть несколько вопросов.

Во-первых, класс Студент должен иметь некоторые методы геттер, так что вы можете получить доступ к данным из студенческого объекта:

public String getName() { 
    return this.name; 
} 

public int getTmaMark() { 
    return this.tmaMark; 
} 

Для создания студенческого объекта с правильными данными, у вас есть 2 варианта:

Вариант а) Создайте конструктор для студента, который принимает оба значения:

public Student(String aName, int aMark) 
{ 
    super(); 
    this.name = aName; 
    this.tmaMark = aMark;  
} 

Вариант B) Создание сеттеры для студенческого класса

public void setName(String aName) { 
    this.name = aName; 
} 

public void setTmaMark(int aMark) { 
    this.tmaMark = aMark; 
} 

Вы можете, конечно, реализовать оба варианта в Student, что дает вам дополнительную гибкость.

Затем, чтобы добавить новый студент в свой ArrayList, вы можете просто создать студента и использовать add его метод массива:

Примеры:

ArrayList<Student> studentList = new ArrayList<Student>(); 

// Create student using constructor 
Student studentA = new Student("Alice", 15); 

// Create student using setters 
Student studentB = new Student(); 
studentB.setName("Bob"); 
studentB.setTmaMark(10); 

// Add both students to the ArrayList 
studentList.add(studentA); 
studentList.add(studentB); 

Пожалуйста, помню, что для studentB Например, если вы добавили конструктор с аргументами в ваш класс Student (вариант A), вам также необходимо создать явный конструктор по умолчанию (без аргументов).

0

Я точно не знаю, что вы пытаетесь сделать. Я собираюсь предположить, что вы хотите добавить ученика в список ArrayList, называемый студенческим списком. Строка Student student = new Student(Student.name); создает новый объект типа Student, называемый учеником, но вы не передаете какие-либо параметры в конструктор для класса ученика, но для этого требуется строка, которая используется как имя. То, что вы хотите сделать (я думаю), добавляет ученика в список массивов. Как ваш ArrayList имеет тип студента метод для добавления студент х должен быть

public void addStudent(Student x) 
    { 
    studentList.add(x); 
    } 

Где Student х передается как к В параметре метода addStudent. Чтобы создать нового ученика с именем объекта newstu и именем nameOfStu, вы можете это сделать.

Student newstu = new Student(nameOfStu); 
addStudent(newstu); 

Надеюсь, это поможет.