找不到符号错误,2个文件包

时间:2017-03-02 05:22:27

标签: java

我正在做一个 Java 课程的作业,我理解我遇到错误的原因。我得到了多个" 找不到符号"错误,但即使经过约3个小时的研究,我也无法理解为什么。任何人都可以帮助或显示绳索吗?

这是第一个文件," Etudiant.java ":

package gestetudiant;

import java.util.Scanner;

public class Etudiant {
    String nom, prenom;
    int anneeNais;
    String code;

        // Constructeur
    public Etudiant(String unNom, String unPrenom, int uneAnnee) {

        nom = unNom;
        prenom = unPrenom;
        anneeNais = uneAnnee;

        char x = unNom.toUpperCase().charAt(0);
        char y = unPrenom.toUpperCase().charAt(0);
        code = x + y + String.valueOf(anneeNais);
    }

        // Méthodes
    public boolean isSucces() {
        int i = 0;
        if (i >= 60)
            return true;
        else return false;
    }

    public String toString() {
        String chaine;
        chaine = "\n1-Nom:" + nom + "\n2-Prenom:" + prenom + "\n3-Annee de naissance:" + anneeNais + "\n4-Code:" + code;
        return chaine;
    }
} // fin classe

这是第二个文件 GestEtudiant.java

package gestetudiant;

import java.util.Scanner;  // Utiliser mode console

public class GestEtudiant {

    private static String code;
    Etudiant[] etudiant = new Etudiant[20]; // Attributs statiques
    static int nbreEtudiants; // comment mettre pour ne depasse pas 20

        // Méthodes statiques
    public static int  ajoutEtudiant() {
        Scanner sc = new Scanner(System.in);
        GestEtudiant monEtudiant = new GestEtudiant();
        System.out.println("Entrer les informations suivantes:\n1-Nom:\n2-Prenom:\n3-Annee de naissance:");

        monEtudiant.nom = sc.next();
        monEtudiant.prenom = sc.next();
        monEtudiant.anneeNais = sc.nextInt();

        for (int i = 0; i < etudiant.length; i++) {
            Etudiant[i] = new Etudiant();
            System.out.println(Etudiant[i].code);
            if (i > 20) {
                System.out.println("Une erreur c'est produite, la limite d'etudiants a ete depassee, l'ajout n'a pas eu lieu ");
            }
        }
    }

    public static int noter() {
        int compt = 0;
        int note = 0;

        Scanner sc = new Scanner(System.in);

        do {
            System.out.println("Veuillez entrer la note de l'etudiant: ");
            note = sc.nextInt();
            compt++;
        } while (note != -1);

        System.out.println(compt);
    }

    public static int moyenne() {
        // A compléter ..
    }

    public static double meilleur() {
        // A compléter ..
    }

    public static double tauxEchec() {
        // A compléter ..
    }

        // Méthode principale
    public static void main(String args []) {
        Scanner sc = new Scanner(System.in);
        int option;

            //Menu répétitif
        do {
            System.out.println("Quelle opération voulez-vous effectuer?\n(1) Inscrire un étudiant.\n(2) Entrer les notes des étudiants.\n(3) Afficher les étudiants.\n(4) Afficher les statistiques.\n(5) Quitter l'application.\n\n");
            option = sc.nextInt();

            switch(option) {

                case 1: { //Inscrire
                        // A compléter ..
                    break;
                }

                case 2: { //Noter
                    // A compléter ..
                    break;
                }

                case 3: { //Afficher
                    // A compléter ..
                    break;
                }

                case 4: { //Statistiques
                    // A compléter ..
                    break;
                }

                case 5: { //Quitter
                    // A compléter ..
                    break;
                }

                default: {
                    System.out.println("Choix Invalide - doit être compris entre 1 et 5");
                }
            } // fin du switch
        } while (option != 5); // fin de la boucle
    }//fin main
} //fin classe

以下是 错误

javac .\\*.java

.\\GestEtudiant.java:24: error: cannot find symbol
                monEtudiant.nom = sc.next();
                           ^
  symbol:   variable nom
  location: variable monEtudiant of type GestEtudiant


.\\GestEtudiant.java:25: error: cannot find symbol
                monEtudiant.prenom = sc.next();
                           ^
  symbol:   variable prenom
  location: variable monEtudiant of type GestEtudiant


.\\GestEtudiant.java:26: error: cannot find symbol
                monEtudiant.anneeNais = sc.nextInt();
                           ^
  symbol:   variable anneeNais
  location: variable monEtudiant of type GestEtudiant


.\\GestEtudiant.java:28: error: non-static variable etudiant cannot be referenced from a static context
                for (int i = 0; i < etudiant.length; i++) {
                                    ^


.\\GestEtudiant.java:29: error: cannot find symbol
                        Etudiant[i] = new Etudiant();
                        ^
  symbol:   variable Etudiant
  location: class GestEtudiant


.\\GestEtudiant.java:29: error: constructor Etudiant in class Etudiant cannot be applied to given types;
                        Etudiant[i] = new Etudiant();
                                      ^
  required: String,String,int
  found: no arguments
  reason: actual and formal argument lists differ in length


.\\GestEtudiant.java:30: error: cannot find symbol
                        System.out.println(Etudiant[i].code);
                                           ^
  symbol:   variable Etudiant
  location: class GestEtudiant


7 errors

2 个答案:

答案 0 :(得分:0)

  • 第一个错误:

我认为您的错误是您的变量monEtudiant属于GestEtudiant类型。

它应该是Etudiant

类型
Etudiant monEtudiant = new Etudiant();
  • 第二个错误:

您正在整理Etudiant的构造函数,不带参数:

etudiant[i] = new Etudiant(); // You have to pass the arguments you define
  • 第3次错误:

你的名字是etudiant而不是Etudiant,所以你可以通过例如etudiant[4]

  • 第4次错误

从静态方法(Etudiant[] etudiant)访问main时,您必须将其声明为静态

static Etudiant[] etudiant = new Etudiant[20];

答案 1 :(得分:0)

更改GestEtudiant monEtudiant = new GestEtudiant();

Etudiant monEtudiant = new Etudiant("test", "test", 1);

您使用的是错误的对象。

  1. 在这里更改逻辑。

    for(int i = 0; i&lt; etudiant.length; i ++){             Etudiant [i] =新的Etudiant();             的System.out.println(Etudiant [I]为.code);

  2. return 语句添加到您的方法中。