【发布时间】:2017-05-08 03:56:51
【问题描述】:
目前我有一个 600 个月(1 月到 12 月)的数组,我想根据初始数组创建一个新的 int 数组。
目前我有(忽略任何旧版。因为我从不同的类中调用数组)
for (int i = 0; i < Legacy.Month1.Length; i++)
{
int[] MonthNo1 = new int[Legacy.Month1.Length];
switch (Legacy.Month1[i])
{
case "January ":
MonthNo1[i] = 1;
break;
case "February ":
MonthNo1[i] = 2;
break;
case "March ":
MonthNo1[i] = 3;
break;
case "April ":
MonthNo1[i] = 4;
break;
case "May":
MonthNo1[i] = 5;
break;
case "June ":
MonthNo1[i] = 6;
break;
case "July ":
MonthNo1[i] = 7;
break;
case "August ":
MonthNo1[i] = 8;
break;
case "September ":
MonthNo1[i] = 9;
break;
case "October":
MonthNo1[i] = 10;
break;
case "November":
MonthNo1[i] = 11;
break;
case "December ":
MonthNo1[i] = 12;
break;
}
for (int j = 0; i < MonthNo1.Length; j++)
{
Console.WriteLine(MonthNo1[j]);
}
不幸的是,这似乎不起作用。
它成功输出了第一个转换后的数字,但其他599个都是空白。最重要的是,在流程结束时,我得到了异常
System.IndexOutOfRangeException
与代码底部的Console.WriteLine(MonthNo1[j]);有关。
谁能看出我哪里出了问题?
【问题讨论】:
-
好吧,按照我的逻辑,
int[] MonthNo1 = new int[Legacy.Month1.Length]将为每个循环创建一个包含 600 个整数的新数组,MonthNo1在第一个循环结束时将只包含一条记录(因此抛出索引超出范围), 我对吗?尝试将int[] MonthNo1 = new int[Legacy.Month1.Length]拉到第一个循环之外。
标签: c# arrays for-loop initialization