在C#中使用未分配的局部变量

时间:2013-02-18 19:06:04

标签: c# loops

我目前的任务是让用户输入5个变量。使用变量我需要创建一系列循环来读取变量并将它们分配给变量。我只需要使用1 Console.ReadLine();我目前有这个设置:

string userName = ""; 
int v1, v2, v3, v4, v5 = 0;  

int i = 1;

while (i <= 5)
{
    int InputCheck = 0;
    Console.WriteLine("Please input a number {0} between 10 and 50;", i);
    InputCheck = Convert.ToInt32(Console.ReadLine());

    if (InputCheck >= 10 && InputCheck <= 50) 
    {

        //if (i >= 10 && i <= 50)
            //i++;

        if (i == 1)
        {
            InputCheck = v1;
        }

        else if (i == 2)
        {
            InputCheck = v2;
        }

        else if (i == 3)
        {
            InputCheck = v3;
        }

        else if (i == 4)
        {
            InputCheck = v4;
        }

        else if (i == 5)
        {
            InputCheck = v5;
        }

        if (InputCheck < 10 || InputCheck > 50)
        {
            Console.WriteLine("The number you entered is either to high or to low please re-enter a number:");
        }
    }

我很困惑为什么我收到错误使用未分配的变量。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

你没有声明v1,v2,v3等。但假设你在其他地方宣布它们,如果我理解你要做的事情,你的任务就会倒退。

例如,你在写作的地方

InputCheck = v1;

你可能想要

v1 = InputCheck;

然后你可以通过v1,v2等,然后用值做你想做的事情(这将是用户为输入键入的内容)。

好的......在你最近的评论之后,你强调你在其他地方初始化v1-5,我很确定你的问题就是你的作业正好如上所述。如果您需要帮助理解原因,请询问。

答案 1 :(得分:1)

您将变量声明为

 int v1, v2, v3, v4, v5 = 0;

这会初始化v5但不会初始化其他v5。错误消息实际上提供了一个线索。阅读消息是第一个调试工具。

消息告诉您“v1未初始化”。所以你去看看你初始化的地方(或者你还没有)。这是如何找到这样的错误。

实际上,当你说你给它们分配了0时,我知道你在一个声明中遇到了多个变量这个问题。该消息使我无需查看您的代码即可找到问题。

答案 2 :(得分:0)

考虑使用List来保存数字

var numbersList = new List<int>();

while(numbersList.Count <= 5)
{
    int input = Convert.ToInt32(Console.ReadLine());
    if(input >= 10 && input <= 50)
    {
        numbersList.Add(input);
        continue;
    }

    Console.WriteLine("The number you entered is either to high or to low please re-enter a number:");
}

答案 3 :(得分:0)

您是否正在初始化变量v1,v2,v3,v4,v5?考虑到你没有初始化变量;你不能将未分配的变量分配给任何其他局部变量,因此声明变量v1,v2,v3,v4,v5 = 0问题将得到解决。如上所述,建议使用通用列表。