c#标记平均计算问题

Ale*_*gla 0 c# arrays for-loop average

        Console.Write ("How many students do you have?: ");
        student = Convert.ToInt32 (Console.ReadLine ());

        int[] numberOfStudents = new int[student];

        for (int i = 1; i <= numberOfStudents.Length; i++) {
            Console.Write ($"Enter student {i}'s current grade: ");
            numberOfStudents [i] = Convert.ToInt16 (Console.ReadLine ());
        }

        int sum = 0;
        for(int i = 0; i < numberOfStudents.Length; i++)
        {
            sum += numberOfStudents[i];
        }

        average = sum / numberOfStudents.Length;

        Console.WriteLine ($"Your student average is {average}.");
        Console.ReadLine ();
Run Code Online (Sandbox Code Playgroud)

基本上用户输入学生数量并确定数组的长度.for循环收集稍后计算平均值的所有标记.

出于某种原因,如果numberOfStudents长度为5,当for循环到达第五个时,它会询问学生标记但是当你输入它而不是得到总和并计算平均值时,程序会因system.indexoutofrange错误而崩溃.

谢谢您的帮助!

Aas*_*mar 6

在C#数组中,起始索引是0而不是1所以你只需要在你的第一个for循环中用0初始化i,你的代码将完全正常工作.试试以下代码:

    Console.Write ("How many students do you have?: ");
    student = Convert.ToInt32 (Console.ReadLine ());

    int[] numberOfStudents = new int[student];

    for (int i = 0; i <= numberOfStudents.Length; i++) {
        Console.Write ($"Enter student {i+1}'s current grade: ");
        numberOfStudents [i] = Convert.ToInt16 (Console.ReadLine ());
    }

    int sum = 0;
    for(int i = 0; i < numberOfStudents.Length; i++)
    {
        sum += numberOfStudents[i];
    }

    average = sum / numberOfStudents.Length;

    Console.WriteLine ($"Your student average is {average}.");
    Console.ReadLine ();
Run Code Online (Sandbox Code Playgroud)