1

我是编写代码的新手,我了解一些,但我无法使某些事情发挥作用。

我希望这让用户先选择一个类别,然后再让他们访问一个类别,但我收到错误消息“使用未分配的局部变量”。我做错什么了吗?

    public static void Main(string[] args)

    {
        bool CalculateSavings, Grades;
        if (CalculateSavings == true)
        {
            int MySavings, Allowance, Food, Transportation, WeeklySavings, MonthlySavings;

            Console.WriteLine("Input your daily allowance:");
            Allowance = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Input your daily food expenses:");
            Food = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Input your daily transportation expenses:");
            Transportation = Convert.ToInt32(Console.ReadLine());

            {

                MySavings = Allowance - (Food + Transportation);
                Console.WriteLine("Your calculated daily savings: {0}", MySavings);

                WeeklySavings = MySavings * 5;
                Console.WriteLine("Your calculated weekly savings: {0}", WeeklySavings);

                MonthlySavings = WeeklySavings * 4;
                Console.WriteLine("Your calculated monthly savings: {0}", MonthlySavings);

                Console.ReadKey();
            }


        }
        else if (Grades == true)
        {
            double Filipino, English, Science, Math, History, Average;

            Console.WriteLine("Input grade in Filipino subject:");
            Filipino = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Input grade in English subject:");
            English = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Input grade in Science subject:");
            Science = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Input grade in Math subject:");
            Math = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Input grade in History subject:");
            History = Convert.ToDouble(Console.ReadLine());

            Average = (Filipino + English + Science + Math + History) / 5;
            Console.WriteLine("Overall grade average: {0}", Average);
            Console.ReadLine();

        }
    }
}

}

让用户先选择一个类别,然后再让他们访问一个类别,但我收到错误消息“使用未分配的局部变量”。

4

4 回答 4

1

您需要设置变量。喜欢:

bool CalculateSavings = true;
bool Grades = true;

C# 编译器不允许未分配的变量,因为可以避免可能的错误。

于 2019-08-02T15:34:18.150 回答
0

您可以将存储盒类比为变量。

也就是说,您从阁楼获得了两个盒子,因此您将它们标记为 CalculateSavings 和 Grades。您想要的下一件事是根据其中的内容选择一条路径。

编译器告诉你的是,没有办法确定它们里面有什么(从阁楼拿走时,这些盒子里可能有一些东西)。因此内容不可靠。编译器不会自动清理和初始化局部变量,而是让您有机会选择该值应该是什么。

因此,在声明局部变量时设置一个初始值将满足该问题。然后它知道盒子里有什么并可以安全地继续。

bool CalculateSavings = false, Grades = true; // An example of initialized variables.
于 2019-08-02T16:13:12.580 回答
0

您还应该编写 if else 语句,如下例所示

  if (CalculateSavings){
            // your Code
        }else if (Grades){  
     // your Code
   }

您还需要为变量赋值。

bool CalculateSavings = true;
bool Grades = true;

由于未分配的变量 c# 它给出错误。

于 2019-08-02T15:42:34.733 回答
0

在您附加到问题的代码中,您使用 定义变量bool CalculateSavings, Grades;,但不分配它们(如bool myVariable = true)。

之后您尝试使用它们 ( (CalculateSavings == true)) ,但是 C# 应该如何比较和使用它们呢?

因此,要解决您的问题,您需要使用truefalse为布尔值分配它们。

未分配的变量就像:你需要卫生纸,你知道它是什么,但你根本没有。(但不为空)。

于 2019-08-02T15:38:38.807 回答