Je viens de commencer à apprendre Java un mois il y a environ un mois et que vous avez maintenant un problème de "StudyList variable non statique, ne peut pas être référencé d'un contexte statique". J'essaie d'avoir une méthode distincte de Main pour renseigner la liste des étudiants, au lieu de copier des trucs de Addstudent pour chaque élève; Mais je ne peux pas obtenir les méthodes d'écrire sur la flambée. (Erreur: (14, 27) Java: une variable non statique StudyList ne peut être référencée à partir d'un contexte statique). Je comprends comment la matrice n'est pas statique car elle a une taille indéfinie, mais comment puis-je le faire fonctionner comme ça? Y a-t-il une meilleure approche? Puis-je avoir la matrice faire partie de la méthode principale puis l'avoir transmis à Addstudent, si oui? et ma classe "étudiante": p>
4 Réponses :
import java.util.ArrayList; public class Main { static 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); } } It was not due to undefined size but was because you were trying to access it without creating an object from a static method. So just write static before it and it will work.
pensais que la réponse ci-dessus répond à vous question, mais peu de mots sur les modifications statiques VS non statiques de Java P>
Caractéristiques des méthodes statiques forte> p>
Méthodes non statiques strong> p>
Une méthode non statique n'a pas le mot clé statique avant le nom de la méthode. p> li>
Une méthode non statique appartient à un objet de la classe et vous devez créer une instance de la classe pour y accéder. P> li>
Les méthodes non statiques peuvent accéder à toute méthode statique et toute variable statique sans créer une instance de la classe. P> LI>
ul>
Vous préférez donc penser si vous avez besoin de définir StudentList comme statique ou non, et si vous modifiez votre code en conséquence. P>
P.s. au-dessus de l'écrit est pris de ici < / a> p>
Votre code devrait ressembler à ceci, en particulier votre classe d'étudiants utilisant Java encapsulation < Pré> xxx pré>
et ensuite tester via votre classe principale: p>
la différence entre statique forte> (global, niveau de classe) et créer un objet par Le statique fort> à l'intérieur de la principale que vous avez accès uniquement aux champs statiques et aux méthodes statiques. Donc c'est lourd. P> nouveau principal () code> permet de fonctionner sur cet objet et ses champs. P>
vide (chaîne []) Code> est le point d'entrée unique à l'application. P>
Les variables non statiques appartiennent à votre instance (chaque fois que vous utilisez
nouvel étudiant () code> vous en créez un). Les variables statiques appartiennent à votre classe, ce qui signifie qu'ils sont partagés dans toutes les instances. Vous ne pouvez pas utiliser une variable d'instance dans un contexte statique car vous n'avez pas d'instance réelle pour commencer. Si vous deviez passer un à la méthode par ses paramètres, alors cela fonctionnerait
TLDR: Faites votre
StudentList code> variable
statique code> pour le faire fonctionner
Duplicaillard possible de ne peut pas faire référence à une référence statique au non- Champ statique