我正在做一个 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
答案 0 :(得分:0)
我认为您的错误是您的变量monEtudiant
属于GestEtudiant
类型。
它应该是Etudiant
Etudiant monEtudiant = new Etudiant();
您正在整理Etudiant
的构造函数,不带参数:
etudiant[i] = new Etudiant(); // You have to pass the arguments you define
你的名字是etudiant
而不是Etudiant
,所以你可以通过例如etudiant[4]
从静态方法(Etudiant[] etudiant
)访问main
时,您必须将其声明为静态
static Etudiant[] etudiant = new Etudiant[20];
答案 1 :(得分:0)
更改GestEtudiant monEtudiant = new GestEtudiant();
到
Etudiant monEtudiant = new Etudiant("test", "test", 1);
您使用的是错误的对象。
在这里更改逻辑。
for(int i = 0; i&lt; etudiant.length; i ++){ Etudiant [i] =新的Etudiant(); 的System.out.println(Etudiant [I]为.code); 强>
将 return 语句添加到您的方法中。