C# 调试时,visual studio为什么说中值是未赋值变量-回答

C# 调试时,visual studio为什么说中值是未赋值变量-回答,c#,C#,所以,我试图制作一个控制台程序来分析数据(很好)。问题是当我去打印中值时,它告诉我它是未赋值的(调试器实际上是这么说的)。我做错了什么? 使用制度 using System; class midpointFormula { static void Main() { double min, max, range, median, quartile1, quartile3, internalQuartileRange, IQR15; int dataPoints,

所以,我试图制作一个控制台程序来分析数据(很好)。问题是当我去打印中值时,它告诉我它是未赋值的(调试器实际上是这么说的)。我做错了什么? 使用制度

using System;

class midpointFormula
{
    static void Main()
    {
    double min, max, range, median, quartile1, quartile3, internalQuartileRange, IQR15;
    int dataPoints, dataPoints1, count, count1;
    double[] dataSet;
    bool isEven;

    count = 0;

    Console.WriteLine("This program allows you to find several diffrent values from the data");
    Console.Write("Please enter the amount of data points you would like to use: ");

    dataPoints = int.Parse(Console.ReadLine());
    dataPoints1 = dataPoints - 1;

    dataSet = new double[dataPoints];

    #region Enter Data
    while (count < dataPoints)
    {

        count1 = count + 1;

        Console.Write("Please enter the {0} datapoint: ", count1);

        dataSet[count] = double.Parse(Console.ReadLine());

        ++count;

    }
    #endregion

    min = dataSet[0];
    max = dataSet[dataSet.Length - 1];
    range = max - min;


    #region Even Check
    if (dataPoints % 2 == 0)
    {
    isEven = true;
    }
    else
    {
    isEven = false;
    }
    #endregion

    if (isEven == true)
    {
        int medianPoint;

        medianPoint = (dataPoints / 2) - 1;

        median = dataSet[medianPoint];


    }
    else


    #region Output
    Console.WriteLine("Minimum is : {0}", min);
    Console.WriteLine("Maximum is : {0}", max);
    Console.WriteLine("Range is   : {0}", range);
    Console.WriteLine("Median is  : {0}", median);
    #endregion

    Console.ReadKey();
}
使用系统;
类中点公式
{
静态void Main()
{
双最小值、最大值、范围、中值、四分位数1、四分位数3、内部四分位数范围、IQR15;
int数据点,数据点1,计数,计数1;
双[]数据集;
布尔·伊塞文;
计数=0;
WriteLine(“此程序允许您从数据中查找多个不同的值”);
Console.Write(“请输入要使用的数据点数量:”);
dataPoints=int.Parse(Console.ReadLine());
数据点S1=数据点-1;
数据集=新的双精度[数据点];
#区域输入数据
同时(计数<数据点)
{
count1=count+1;
Write(“请输入{0}数据点:”,count1);
dataSet[count]=double.Parse(Console.ReadLine());
++计数;
}
#端区
最小值=数据集[0];
max=dataSet[dataSet.Length-1];
范围=最大值-最小值;
#区域偶数检查
如果(数据点%2==0)
{
isEven=真;
}
其他的
{
isEven=假;
}
#端区
如果(isEven==真)
{
int medianPoint;
medianPoint=(数据点/2)-1;
中位数=数据集[medianPoint];
}
其他的
#区域产出
WriteLine(“最小值为:{0}”,最小值);
WriteLine(“最大值为:{0}”,max);
WriteLine(“范围是:{0}”,范围);
WriteLine(“中位数为:{0}”,中位数);
#端区
Console.ReadKey();
}
}


注:是的,我知道如果数据点数量不均匀,它将不会计算数据点,我仍在努力。

因为只有当
isEven
为真时,
中值才会被赋值。否则,它将被统一化。因为使用一个甚至可能未赋值的变量是不可接受的,所以编译器禁止使用它

另外,报告此错误的不是调试器,而是编译器


p.p.S.你的其他声明是怎么回事?--基于缩进,它看起来像一个不完整的想法和一个明显的缺陷。(
Console.WriteLine(“最小值为:{0}”,min);
仅在
isEven
为false时运行,但其余语句将运行,因为它们没有用大括号括起来。)

因为只有在
isEven
为true时,
中值才会被赋值。否则,它将被统一化。因为使用一个甚至可能未赋值的变量是不可接受的,所以编译器禁止使用它

另外,报告此错误的不是调试器,而是编译器


p.p.S.你的其他声明是怎么回事?--基于缩进,它看起来像一个不完整的想法和一个明显的缺陷。(
Console.WriteLine(“最小值为:{0}”,min);
仅在
isEven
为false时才会运行,但其余语句将运行,因为它们没有大括号。)

在您看来,中间变量总是初始化的吗?不要认为这段代码会编译(即使中间变量没有问题)我没有看到最后一个区块的大括号。“杰姆斯,我还处在编码的中间,我还没有写任何其他的东西,所以它会像没有什么东西在那里。”汤姆:<代码>不,它不会。代码>[假装什么都没有]。相反,编译器将获取
else
关键字后面的第一条语句,并将其与else子句相关联;因此,很可能会引入您不打算或不期望的行为。如果需要,可以使用空语句(仅使用分号)。使用大括号也可能是一个好主意,即使是对于单个或空语句,这样以后就不会因为添加更多语句而忘记大括号而引入逻辑错误……而且在您看来,中值变量总是初始化的吗?不要认为这段代码会编译(即使没有中值变量的问题)我没有看到最后一个区块的大括号。“杰姆斯,我还处在编码的中间,我还没有写任何其他的东西,所以它会像没有什么东西在那里。”汤姆:<代码>不,它不会。代码>[假装什么都没有]。相反,编译器将获取
else
关键字后面的第一条语句,并将其与else子句相关联;因此,很可能会引入您不打算或不期望的行为。如果需要,可以使用空语句(仅使用分号)。使用大括号也是一个好主意,即使是对于单个或空语句,这样以后就不会因为添加更多语句而忘记大括号而引入逻辑错误……谢谢,这解决了问题,也让我意识到我无意中在if语句中输入了true而不是false。我不知道这一点,下次会记得的。谢天谢地,这解决了问题,也让我意识到我无意中在if语句中输入了true而不是false。我不知道这一点,下次会记得的。谢谢