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。我不知道这一点,下次会记得的。谢谢