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

本文关键字:小于 等于零 参数 列表 大于 索引 错误 应用程序 从零开始 控制台 | 更新日期: 2023-09-27 18:04:28

STATIC VOID MAIN GOES HERE

        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 = "";

我只收到错误索引(从零开始)必须大于或等于零并且小于参数列表的大小",在我将字符串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();
    }

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

问题就在这里:

    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);

你有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);

我还建议使用Console.WriteLine而不是Console.Write'n。这很明显,您打算添加一行,这反过来又使代码更容易阅读和维护。