在c#中使用do while循环和bool变量时出错“使用未分配的局部变量”

时间:2013-09-04 16:23:51

标签: c#

我有一个问题,我在标题中提到过,只需要一些帮助来解决这个恼人的错误。

这是我的代码:

bool moreEmp;
int arrayplus;
string doitagain;
arrayplus = -1;

string[,] employees = new string[10, 10];

do
{
    arrayplus++;
    Console.WriteLine("please enter your employee's number");
    employees[0, arrayplus] = Console.ReadLine();
    Console.ReadLine();
    Console.WriteLine("please enter your employee's name");
    employees[1, arrayplus] = Console.ReadLine();
    Console.ReadLine();
    Console.WriteLine("please enter your employee's age");
    employees[2, arrayplus] = Console.ReadLine();
    Console.ReadLine();
    Console.WriteLine("please enter your employee's official position ");
    employees[3, arrayplus] = Console.ReadLine();
    Console.ReadLine();
    Console.WriteLine("please enter your employee's salary");
    employees[4, arrayplus] = Console.ReadLine();
    Console.ReadLine();
    Console.WriteLine("Do you want to add more employees into this list? y or n.");

    doitagain = Console.ReadLine();

    if (doitagain == "y" || doitagain == "Y")
    {
       moreEmp = true;
    }
    else if (doitagain == "n" || doitagain == "N")
    {
       moreEmp = false;
    }
    else
    {
       Console.WriteLine("You have entered an invalid information");
    }
} 
while (moreEmp == true);

所以我实际上用我的if语句分配了bool变量,我仍然不知道为什么我这样做了这样的错误。感谢您阅读我的问题,希望您能帮助我:D。

2 个答案:

答案 0 :(得分:1)

您可以在ifelse if中分配值,但不能在else子句中分配值。如果最终else被命中,则该值永远不会分配给该变量。

查看代码时,可能会在true中为其分配else值。这将为你解决问题。

答案 1 :(得分:1)

问题出在else块中,当doitagain既不是n/N还是y/Y时,您如何处理?

所以要么使用这个

else
{
    moreEmp = false; //Set this as your requirement
    Console.WriteLine("You have entered an invalid information");
}

或者

bool moreEmp = false;
do{
    if (doitagain == "y" || doitagain == "Y")
    {
        moreEmp = true;
    }
}while(moreEmp);