首先,这是我的代码:
struct eleve
{
public string nom;
public string prenom;
public char sexe;
public int programme;
public naissance datenaissance;
}
static void Main(string[] args)
{
eleve[] classe = new eleve[8];
var sexe1 = "MF";
var random = new Random();
for (int i = 0; i < classe.GetLength(0); i++)
{
Console.WriteLine("Veuillez ecrire le prenom de l'etudiant.");
classe[i].prenom = Console.ReadLine();
Console.WriteLine("Veuillez ecrire le nom de l'etudiant.");
classe[i].nom = Console.ReadLine();
Console.WriteLine("Veuillez ecrire la date de naissance de l'etudiant. (Annee, mois, jour)");
classe[i].datenaissance.annee = Convert.ToInt32(Console.ReadLine());
classe[i].datenaissance.mois = Convert.ToInt32(Console.ReadLine());
classe[i].datenaissance.jour = Convert.ToInt32(Console.ReadLine());
classe[i].sexe = sexe1[random.Next(sexe1.Length)];
classe[i].programme = random.Next(1, 400);
}
Array.Sort(classe, (x, y) => String.Compare(x.nom, y.nom)); //trie de nom
for (int i = 0; i< classe.GetLength(0); i++)
{
affichestruct(classe[i]);
}
我试图创建一个单独打印出女性和男性学生的程序,例如,它最终将显示这样的内容:
Male :
malestudent1
malestuden2
Female :
femalestudent1
femalestudent2
我尝试过这样做,但它没有工作
static void affichemale(int[] arr)
{
Console.WriteLine("Male : ");
for (int i = 0; i < arr.GetLength(0); i++)
{
if (arr[i].sexe == "M")
{
Console.WriteLine(arr[i].nom);
}
}
Console.WriteLine("Female: ");
for (int i = 0; i < arr.GetLength(0); i++)
{
if (arr[i].sexe == "F")
{
Console.WriteLine(arr[i].nom);
}
}
}
我可以做些什么或改变什么才能让它发挥作用?
答案 0 :(得分:1)
好的,我看到了各种各样的问题。我将根据他们在代码中的顺序列出它们。
1)尽量不要使用结构。如果您没有使用结构的特定原因,请使用类。有关类和结构的更多信息,请访问:https://msdn.microsoft.com/en-us/library/ms173109.aspx
2)您尝试拨打affichestruct
。此方法不存在,我想您的意思是以affichemale
命名。
2)affichemale
获取int[]
作为参数。但是,您使用它就好像您实际期望eleve[]
一样。将参数类型更改为eleve[]
。这就是编译器出错的原因。
3)在affichemale
中,您尝试将“F”和“M”与eleve.nom
进行比较。问题是“M”和“F”是字符串而eleve.nom
是字符。我不确定这是否有效,但我猜它会因为无法比拟的类型而崩溃。使用'M'和'F'代替比较。