1

下面的代码运行一个“for”循环来创建第 1 个月到第 12 个月,然后根据它们的编号为每个月命名 Jan 到 Dec。这些片段编译得很好。在我尝试在屏幕上写月份名称的底部是它失败的地方。它说“使用未分配的局部变量'monthName';但是之前刚刚使用过monthName并在上面声明。您可以提供的任何帮助将不胜感激。

for (int month = 1; month <= 12; month++)
{
    string monthName;
    double monthlyProd = .1 * dProdRate;
    double monthlySales = .07 * dSalesRate;
    if (month == 1) { monthName = "Jan"; }
    if (month == 2) { monthName = "Feb"; monthlyProd = 0; }
    if (month == 3) { monthName = "Mar"; }
    if (month == 4) { monthName = "Apr"; }
    if (month == 5) { monthName = "May"; }
    if (month == 6) { monthName = "Jun"; monthlyProd = 0; }
    if (month == 7) { monthName = "Jul"; }
    if (month == 8) { monthName = "Aug"; }
    if (month == 9) { monthName = "Sep"; monthlySales = (.15 * dSalesRate); }
    if (month == 10) { monthName = "Oct"; }
    if (month == 11) { monthName = "Nov"; }
    if (month == 22) { monthName = "Dec"; monthlySales = (.15 * dSalesRate); }
}
dEndingInventory += dPreviousProd - dPreviousSales;
Console.WriteLine("{0}{1,15}{2,15}{3,15}", monthName, monthlyProd, monthlySales, dEndingInventory);
4

3 回答 3

2

你知道它month只能取 1 到 12 的值,但编译器并不那么聪明。如果 saymonth为 0 则monthName永远不会为变量赋值,这就是编译器所抱怨的。要修复它,只需在声明变量时初始化变量:

string monthName = null;

此外,您的代码有些可疑,因为monthName它在声明它的循环之外使用,但我认为这是一个错字,因为现在的代码不会给您您所询问的错误。

于 2014-11-12T06:06:34.867 回答
0

您肯定会在范围之外声明monthName(在您的循环中再次声明)。否则程序应该告诉编译错误。右键单击变量,然后“转到防御”。如果是这样,变量是不同的。所以只有它的行为不端

原因是两个变量在主内存中具有不同的内存。所以一个内存更新不会影响另一个。编译器将使用最大局部变量进行处理。内部循环是内部声明的循环。在循环之外它在外面

因此,如果您不需要外部变量值,请不要在内部再次声明它。否则,您在循环之外用其他名称声明它

于 2014-11-12T06:08:31.057 回答
0

You have declared the monthName, monthlyProd,monthlySales under the scope of For Loop and trying to use those variables out of the scope of For Loop. You should declare variables before for loop-

string monthName;
double monthlyProd = .1 * dProdRate;
double monthlySales = .07 * dSalesRate;

for (int month = 1; month <= 12; month++)
{

    if (month == 1) { monthName = "Jan"; }
    if (month == 2) { monthName = "Feb"; monthlyProd = 0; }
    if (month == 3) { monthName = "Mar"; }
    if (month == 4) { monthName = "Apr"; }
    if (month == 5) { monthName = "May"; }
    if (month == 6) { monthName = "Jun"; monthlyProd = 0; }
    if (month == 7) { monthName = "Jul"; }
    if (month == 8) { monthName = "Aug"; }
    if (month == 9) { monthName = "Sep"; monthlySales = (.15 * dSalesRate); }
    if (month == 10) { monthName = "Oct"; }
    if (month == 11) { monthName = "Nov"; }
    if (month == 22) { monthName = "Dec"; monthlySales = (.15 * dSalesRate); }
}
dEndingInventory += dPreviousProd - dPreviousSales;
Console.WriteLine("{0}{1,15}{2,15}{3,15}", monthName, monthlyProd, monthlySales, dEndingInventory);
于 2014-11-12T06:09:51.213 回答