Я только начал изучать Java месяц назад или около того, и теперь у меня возникла проблема с «на нестатическую переменную studentList нельзя ссылаться из статического контекста».Я пытаюсь использовать отдельный метод от main для заполнения списка учеников вместо того, чтобы копировать вставку из addStudent для каждого ученика;но я не могу получить методы для записи в ArrayList.(Ошибка: (14, 27) java: на нестатическую переменную studentList нельзя ссылаться из статического контекста).Я понимаю, что массив не является статичным, потому что он имеет неопределенный размер, но как я могу заставить его работать как есть?Есть ли лучший подход?Могу ли я сделать массив частью основного метода, а затем передать его в addStudent, если да, то как?
import java.util.ArrayList;
public class Main {
ArrayList<Student> studentList = new ArrayList<>();
public static void main(String []args) {
addStudent("Adam", "Goldsmith", 70, 50);
addStudent("John", "Smith", 20, 40);
addStudent("Lewis", "Peterson", 90, 85);
for (Student obj: studentList){
System.out.println("Name: " + obj.studentForename + " "+ obj.studentSurname);
}
}
public static void addStudent(String forename, String surname, int coursework, int test) {
Student newStudent = new Student(forename, surname);
newStudent.setForename(forename);
newStudent.setSurname(surname);
newStudent.averageMark(70, 65);
studentList.add(newStudent);
}
}
и мой "Студенческий" класс:
public class Student {
String studentForename;
String studentSurname;
public Student(String studentForename, String studentSurname) {
setForename(studentForename);
setSurname(studentSurname);
}
// Set forename.
public void setForename(String newForename) {studentForename = newForename;}
// Set surname.
public void setSurname(String newSurname) {studentSurname = newSurname;}
//
public double averageMark(int courseworkMark, int testMark){
return (courseworkMark+testMark)/2;
}
// Grab the forename
public String grabForename(){
return studentForename;
}
// Grab the surname
public String grabSurname(){
return studentSurname;
}
// Grab the full name
public String grabFullName(){
return studentForename + "" + studentSurname;
}
}