我想进入学生' Id和Marks成一个数组。问题陈述是,如果用户输入学生的ID,则应显示该学生的标记。以下是我的代码。你能帮我吗?
int [] mark = new int [5] ;
string [] studentsid = new string [5];
string userInput = "";
bool found = false;
int i = 0;
string[] answer = new string[5];
for (i = 0; i < answer.Length; i++)
{
Console.WriteLine("Enter Student " + (i + 1) + " 's ID Number: ");
studentsid[i] = Console.ReadLine();
Console.WriteLine("Enter student" + (i + 1) + "'s mark: ");
mark[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Enter one of you student's id number");
userInput = Console.ReadLine();
if (studentsid[i].ToUpper() == userInput.ToUpper())
{
found = true;
Console.WriteLine(mark[i]);
}
if (mark[i] >=85 && mark[i] <= 100 )
{
Console.WriteLine("Distinction");
}
Console.ReadKey();
答案 0 :(得分:4)
您需要在代码块周围放置第二个循环,以检查学生的ID是否匹配。
现在,您只是检查一个学生(阵列中的最后一个学生)是否与用户的输入相匹配。你也在循环之外使用for循环的控制变量,这通常被认为是不好的做法。
考虑这样的事情:
Console.WriteLine("Enter one of you student's id number");
userInput = Console.ReadLine();
for (int i = 0; i < studentsid.length; i++)
{
if (studentsid[i].ToUpper() == userInput.ToUpper())
{
found = true;
Console.WriteLine(mark[i]);
}
}
此外,您的答案&#34;数组无用。您只需创建它以检查其硬编码长度5.使用studentid的长度。
最后,两个数组并不是存储此类数据的理想方式。 使用学生ID作为键并将标记作为值的地图将是存储和访问此数据的更有效方式。