从数组中检索数据

时间:2015-06-19 17:08:53

标签: c# arrays

我想进入学生' 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(); 

1 个答案:

答案 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作为键并将标记作为值的地图将是存储和访问此数据的更有效方式。

相关问题