所以,我正在尝试制作一个分析数据的控制台程序(很好)。问题是,当我打印中位数时,它告诉我它是未分配的(调试器实际上是这样说的)。我做错了什么? 使用System;
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();
}
}
注意:是的,我知道如果数据点数量不均匀,它将无法计算数据点,我仍在努力。
答案 0 :(得分:4)
如果median
为真,则仅为isEven
分配值。如果不是,它将被酉化。由于使用甚至可能未分配的变量永远可接受,因此编译器禁止它。
P.S。报告此错误的不是调试器,它是编译器。
P.P.S。您的其他声明发生了什么变化? - 基于缩进,它看起来像一个不完整的想法和一个明显的错误。 (Console.WriteLine("Minimum is : {0}", min);
只会在isEven
为false时运行,但其余语句将运行,因为它们没有括号括起来。)