Привет, я не уверен, как я отношусь к привязке объектов к моему арраисту.Ссылка на объекты на arraylist
Класс, где им объявляя ArrayList:
Любая помощь будет высоко ценится
Привет, я не уверен, как я отношусь к привязке объектов к моему арраисту.Ссылка на объекты на arraylist
Класс, где им объявляя ArrayList:
Любая помощь будет высоко ценится
Прежде всего name
не является статичным, так что вы не можете обращайтесь к нему как Student.name
только экземпляр студента может получить к нему доступ, если это public
. Теперь вы хотите построить Student
, чем вы должны передать name
ученика в конструкторе. Вы можете объявить getter
andsetter
методы для ваших Student
атрибутов.
Кроме того, ArrayList.add
можно использовать, чтобы добавить Students
в ваш list
, и вам лучше не добавлять студентов в конструктор, чтобы использовать этот метод для использования этого метода.
НАПРИМЕР:
Student student = new Student("NewStudent");
System.out.println("Name of student :" +student.getName());
studentList.add(student);
Большое спасибо! Я постоянно путаюсь с Java, но это на самом деле действительно упростило ситуацию и заставило меня понять, насколько плохи мои предыдущие попытки! – erpel
@erpel your welcm. :) –
Относно:
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);
}
В вашем TutorGroup конструктора вы пытаетесь передать значение в имени переменного в классе Student которой вы наклоняете доступ, потому что 1. переменного именем является частным, так только члены класса имеют к нему доступ. и 2. Это еще не имеет значения, поскольку это то, что вы пытаетесь передать в конструктор Student.
Что вы должны сделать, это передать строковый литерал в ваш конструктор Student, например: new Student («Jamie»), тогда он будет сохранен в переменной имени в вашем классе Student, и если вам нужно получить доступ к имени позже, добавьте открытый метод в вашем классе Student, который возвращает значение в вашей переменной имени.
В вашем коде есть несколько вопросов.
Во-первых, класс Студент должен иметь некоторые методы геттер, так что вы можете получить доступ к данным из студенческого объекта:
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), вам также необходимо создать явный конструктор по умолчанию (без аргументов).
Я точно не знаю, что вы пытаетесь сделать. Я собираюсь предположить, что вы хотите добавить ученика в список 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);
Надеюсь, это поможет.
Можете ли вы объяснить словами, что вы пытаетесь сделать здесь? Студенческий студент = новый Студент (Student.name); studentList.add (student.Student (name, tmaMark)); ' – Shahzeb
Когда вы создаете нового ученика, вы должны писать: новый ученик (« Боб »); то есть, передавая имя, которое вы хотите использовать. Вы не можете ссылаться на имя переменной класса, которое определяется как «private String name». –