2017-04-30 5 views
1

Je travaille sur un projet final pour l'école et j'ai des problèmes. Je n'ai jamais fait de programmation en Java ou vraiment orienté objet, donc mon code ne va probablement pas être aussi génial.Erreur ArrayList - Impossible de trouver le symbole

Je rencontre des problèmes avec ma liste de tableaux. Je reçois une erreur qui dit ne peut pas trouver le symbole - class studentInfo. Que fais-je incorrectement avec mon code? Cela m'empêche de compiler le code. Toutes les informations sur les étudiants sont fausses.

Est-ce que quelqu'un aurait des recommandations sur la façon de nettoyer ou d'optimiser mon code?

import java.util.ArrayList; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Roster 
{ 
    private static ArrayList<studentInfo> studentList = new ArrayList<>(); 

    public static void main(String[] args) 
    { 

     add(1, "John", "Smith", "[email protected]", 20, 88, 79, 59); 
     add(2, "Suzan", "Erickson", "[email protected]", 19, 91, 72, 85); 
     add(3, "Jack", "Napoli", "The_lawyer99yahoo.com", 19, 85, 84, 87); 
     add(4, "Erin", "Black", "[email protected]", 22, 91, 98, 82); 
     print_all(); 
     print_invalid_emails(); 
     print_average_grade(2); 
     remove(3); 
     remove(3); 



    } 
    public static void add (int studentID, String firstName, String lastName, String email, int age, int grade1, int grade2, int grade3) 
    { 
     int[] grades = {grade1, grade2, grade3}; 
     studentInfo newStudent = new studentInfo (studentID, firstName, lastName, email, age, grades); 
     studentList.add(newStudent); 
    } 

    public static void remove(int studentID) 
    { 
     for (studentInfo i: studentList) { 
      if (i.getStudentID == studentID) { 
       studentList.remove(i); 
       System.out.println("Student Removed"); 
      } 
      else { 
      System.out.println("A student with this ID(studentID) was not found."); 
      return; 
      } 

     } 
    } 
    public static void print_all(){ 
    for (studentInfo i: studentList) { 
     studentList.get(i).print(); 
    } 
    } 
    public static void print_average_grade(int studentID) { 
     studentList.get(studentID).getAverageGrade(); 
} 

public static void print_invalid_emails() { 
    String RFC5322 = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-][email protected][a-zA-Z0-9.-]+$"; 
    Pattern pattern = Pattern.compile(RFC5322); 
    for (studentInfo i: studentList) { 
     String email = i.getEmail; 
     Matcher matcher = pattern.matcher(email); 
     System.out.println(email +":\t"+ matcher.matches()); 
    } 

} 


} 

Ma deuxième classe

public class Student 
{ 
    private int studentID; 
    private String firstName; 
    private String lastName; 
    private String email; 
    private int age; 
    private int[] grades; 

    public Student (int studentID, String firstName, String lastName, String email, int age, int grades[]) 
    { 
    setStudentID(studentID); 
    setFirstName(firstName); 
    setLastName(lastName); 
    setEmail(email); 
    setAge(age); 
    setGrades(grades); 

    } 

    public void setStudentID(int studentID) { 
     this.studentID = studentID; 
    } 

    public void setFirstName(String firstName) 
    { 
     this.firstName = firstName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public void setGrades(int[] grades) { 
     this.grades = grades; 
    } 

    public int getStudentID() { 
     return studentID; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public String getFullName() { 
     return firstName + lastName; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public int getAge() { 
     return age; 
    } 

    public int[] getGrades() { 
     return grades; 
    } 

    public int getAverageGrade() { 
     int averageGrade = 0; 
      for (int grade : grades) { 
       averageGrade += grade; 
      } 
     return averageGrade; 
    } 
    public void print() { 
     System.out.println(
     "Student Name:\t" + getFullName() + "\n " + 
     "Student ID:\t" + getStudentID() + "\n" + 
     "Email:\t" + getEmail() + "\n" + 
     "Age:\t" + getAge() + "\n" + 
     "Average Grade:\t" + getAverageGrade() 
     ); 

    } 


} 
+1

Voulez-vous dire '' Student' au lieu de studentInfo'? –

Répondre

1

J'ai fait les modifications suivantes à votre code:

  • ArrrayList devrait stocker objet de type Student. studentInfo ne fait référence à aucune classe définie.
  • Dans la méthode add, remplacez le type newStudent par Student.
  • Effectuez les mêmes ajustements nécessaires dans les boucles for dans les méthodes remove, print_all et print_invalid_emails.

Le code corrigé est indiqué ci-dessous:

import java.util.ArrayList; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Roster 
{ 
    private static ArrayList<Student> studentList = new ArrayList<>(); 

    public static void main(String[] args) 
    { 

     add(1, "John", "Smith", "[email protected]", 20, 88, 79, 59); 
     add(2, "Suzan", "Erickson", "[email protected]", 19, 91, 72, 85); 
     add(3, "Jack", "Napoli", "The_lawyer99yahoo.com", 19, 85, 84, 87); 
     add(4, "Erin", "Black", "[email protected]", 22, 91, 98, 82); 
     print_all(); 
     print_invalid_emails(); 
     print_average_grade(2); 
     remove(3); 
     remove(3);  
    } 

    public static void add (int studentID, String firstName, String lastName, String email, int age, int grade1, int grade2, int grade3) 
    { 
     int[] grades = {grade1, grade2, grade3}; 
     Student newStudent = new Student (studentID, firstName, lastName, email, age, grades); 
     studentList.add(newStudent); 
    } 

    public static void remove(int studentID) 
    { 
     for (Student i: studentList) { 
      if (i.getStudentID() == studentID) { 
       studentList.remove(i); 
       System.out.println("Student Removed"); 
      } 
      else { 
      System.out.println("A student with this ID(studentID) was not found."); 
      return; 
      } 

     } 
    } 
    public static void print_all(){ 
    for (Student i: studentList) { 
     i.print(); 
    } 
    } 
    public static void print_average_grade(int studentID) { 
     studentList.get(studentID).getAverageGrade(); 
} 

public static void print_invalid_emails() { 
    String RFC5322 = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-][email protected][a-zA-Z0-9.-]+$"; 
    Pattern pattern = Pattern.compile(RFC5322); 
    for (Student i: studentList) { 
     String email = i.getEmail(); 
     Matcher matcher = pattern.matcher(email); 
     System.out.println(email +":\t"+ matcher.matches()); 
    } 

} 


} 
+0

C'était exactement ça! J'ai trouvé que je continuais à avoir des erreurs quand je le changeais en Student au lieu de StudentInfo parce que j'utilisais, par exemple, i.getEmail qui faisait référence à une variable par rapport à i.getEmail() pour la méthode. – gmart

+0

Heureux que cela a fonctionné pour vous. Ne pas oublier d'upvote aussi: D Exactement ainsi. Omettre les crochets dans les appels de méthode est une erreur de codage très courante –