The below code runs a 'for' loop to create months 1 through 12 then names each month Jan through Dec according to their number. That pieces compiles fine. At the bottom where I try to write the month name on the screen is where it is failing. It says "use of unassigned local variable 'monthName'; however monthName was just used previously and is declared above. Any help you could provide would be greatly appreciated.
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);
You know that month
can only take the values 1 to 12 inclusive but the compiler is not that smart. If say month
is 0 then the variable monthName
is never assigned a value and that is what the compiler is complaining about. To fix it simply initialize the variable when you declare it:
string monthName = null;
Also, there is something fishy about your code because monthName
is used outside the loop where it is declared but I assume that this is a typo because the code as it stands now will not give you the error you are asking about.