静电主要在这里
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)
问题出在这里:
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.这显然意味着您想要添加一行,这反过来使代码更容易阅读和维护.
| 归档时间: |
|
| 查看次数: |
1818 次 |
| 最近记录: |