2

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を追加した後、エラーインデックス(ゼロベース)はゼロ以上で引数リストのサイズよりも小さくなければならないことだけを受け取ります。ステートメントの終わりにすると、プログラムは正常に実行されます。追加した場合にのみ、エラーが発生します。

         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();
    }
4

1 に答える 1

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

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。これにより、行を追加しようとしていることが明らかになり、コードの読み取りと保守が容易になります。

于 2013-03-18T19:05:45.590 に答える