【问题标题】:Can't seem to fix unassigned local variables似乎无法修复未分配的局部变量
【发布时间】:2013-03-24 00:32:15
【问题描述】:

所以我一直在为一个项目编写这个程序,一切似乎都很好。我一直在用我的导师代码检查我的工作,但我没有前 40 行代码的副本可供检查,我无法弄清楚是什么导致了这个问题

    static void Main(string[] args)
    {
        int count = 0;
        string[] names = new string[MAX_SIZE];
        int[] scores = new int[MAX_SIZE];
        string[] splitInput = new string[MAX_SIZE];

        int sum = 0;
        int minScore = 0;
        int maxScore = 0;

        string input;

        string minName;
        string maxName;

        Console.WriteLine("===============Saturday Night Coders================");
        Console.WriteLine("===============Bowling Score Program================");

        for (int i = 0; i < MAX_SIZE; i++)
        {




            Console.WriteLine("\n Please Enter a name and a score separated by a space");
            Console.WriteLine("Enter a blank line when finished");

            input = Console.ReadLine();

            if (input == "")

            {
                Console.WriteLine("===========INPUT COMPLETE=========");
                break;
            }





            splitInput = input.Split();

            string name = splitInput[0];
            int score = int.Parse(splitInput[1]);

            names[i] = name;
            scores[i] = score;
            sum += score;




            if (minScore > score)
            {
                minScore = score;
                minName = name;
            }
            if (maxScore < score)
            {
                maxScore = score;
                maxName = name;
            }

            count = i + 1;
        }

        double average = sum / count;
        Console.WriteLine("Here are the scores for this game");
        PrintScores(names, scores, count);
        Console.WriteLine("Congratulations {0}, your score of {1} was the highest", maxName, maxScore);
        Console.WriteLine("{0} , your score of {1} was the lowest, Maybe you should find a new hobby", minName, minScore);
        Console.WriteLine("\n The team average was {0:f2}", average);
        Console.WriteLine("Press any key to continue...");
        Console.ReadKey();
    }
    static void PrintScores(string[] names, int[] scores, int count)
    {
        for (int i = 0; i < count; i++)
        {
            Console.Write("{0} \t {1}", names[i], scores[i]);
            if (scores[i] == MAX_SCORE)
            {
                Console.WriteLine("*");
            }
            else
            {
                Console.WriteLine("");
            }
            Console.WriteLine();
        }
    }



}

我遇到的问题是这里的这段代码

if (minScore > score)
            {
                minScore = score;
                minName = name;
            }
            if (maxScore < score)
            {
                maxScore = score;
                maxName = name;
            }

            count = i + 1;
        }

        double average = sum / count;
        Console.WriteLine("Here are the scores for this game");
        PrintScores(names, scores, count);
        Console.WriteLine("Congratulations {0}, your score of {1} was the highest", maxName, maxScore);
        Console.WriteLine("{0} , your score of {1} was the lowest, Maybe you should find a new hobby", minName, minScore);

局部变量的未分配使用错误与 minName 和 maxName 值有关。如果我用 minName = ""; 声明它们最大名称 = "";代码将编译,但得分最低的人的名字将是“”,得分将为 0。这一切似乎都有效,直到我添加了 PrintScores 方法。任何帮助表示赞赏,我已经摆弄了一个多小时,但似乎仍然无法找到解决方案

【问题讨论】:

    标签: c# arrays methods unassigned-variable


    【解决方案1】:

    您在 for 循环之外声明 minNamemaxName。您只能在 for 循环内分配它们...问题:如果 for 循环不运行,则不会分配变量。因此编译器禁止使用它们。

    解决方案:只需使用有意义的值初始化它们,例如 string.Empty

    【讨论】:

      猜你喜欢
      • 2011-09-06
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多