控制台应用程序错误"索引(从零开始)必须大于或等于零且小于参数列表的大小"

And*_*ith 2 c#

静电主要在这里

        string[] dayNames = { "Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat" };

        string m = "";

        double average = 0;
        double total = 0;

        int[] bCalories = new int[7];
        int[] lCalories = new int[7];
        int[] dCalories = new int[7];

        int[] dayTotal = new int[7];

        for (int i = 0; i < 7; i++)
        {
            Console.Write("Please enter calories for {0} breakfast: ", dayNames[i]);
            bCalories[i] = int.Parse(Console.ReadLine());
            Console.Write("Please enter calories for {0} lunch: ", dayNames[i]);
            lCalories[i] = int.Parse(Console.ReadLine());
            Console.Write("Please enter calories for {0} dinner: ", dayNames[i]);
            dCalories[i] = int.Parse(Console.ReadLine());

            dayTotal[i] += bCalories[i];
            dayTotal[i] += lCalories[i];
            dayTotal[i] += dCalories[i];

            total += dayTotal[i];
            Console.WriteLine();
        }
        average = total /7;
        Console.Clear();
        Console.WriteLine("Day\t\tBreakfast\tLunch\tDinner\tDay Total");
        for (int i = 0; i < 7; i++)
        {
            if (dayTotal[i] > average)
            {
                 m = "*** Above Average";
            }
            else if(dayTotal[i] <= average)
                 m = "";
Run Code Online (Sandbox Code Playgroud)

我只收到错误索引(从零开始)必须大于或等于零并且小于参数列表的大小",在我将字符串m添加到下面的writeline之后.如果我没有字符串m在声明结束然后程序运行正常,它只有当我添加它,我得到一个错误

         Console.Write("{0}\t\t{1}\t\t{2}\t{3}\t{4}\t{5}\n", dayNames[i],
         bCalories[i], lCalories[i], dCalories[i], dayTotal[i] + m);
        }

        Console.Write("Average daily calories: {0}", average);
        Console.ReadLine();
    }
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 6

问题出在这里:

    Console.Write("{0}\t\t{1}\t\t{2}\t{3}\t{4}\t{5}\n", dayNames[i],
     bCalories[i], lCalories[i], dCalories[i], dayTotal[i] + m);
Run Code Online (Sandbox Code Playgroud)

你有6个说明符(0 - 5),但只传入5个参数.如果你把它改成只包括{4},它应该正常工作:

    Console.WriteLine("{0}\t\t{1}\t\t{2}\t{3}\t{4}", dayNames[i],
     bCalories[i], lCalories[i], dCalories[i], dayTotal[i] + m);
Run Code Online (Sandbox Code Playgroud)

我也建议使用Console.WriteLine而不是Console.Write使用\n.这显然意味着您想要添加一行,这反过来使代码更容易阅读和维护.