收到空错误“未处理的异常: 系统.空异常: 值不能为空” C#

本文关键字:异常 不能 系统 未处理 错误 | 更新日期: 2023-09-27 17:56:57

你好,我在编程界相当新手,我对一个简单的程序有点问题。我创建了一个数组,并通过构造函数将其传递给名为"Temperature"的类。我试图找到数组的最大数量并将其返回给方法,但它似乎没有值,因此导致错误。

namespace TempApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Temperature aTemperatureObject = new Temperature();
            double[] temp = new double [7];
            string inValue;
            for (int i = 0; i < temp.Length; i++)
            {
                Console.Write("Enter the temperature for Day {0}: ", i + 1);
                inValue = Console.ReadLine();
                temp[i] = double.Parse(inValue);
            }
            double highestTemp = aTemperatureObject.GetHighestTemp();
            double lowestTemp = aTemperatureObject.GetLowestTemp();
            double averageTemp = aTemperatureObject.GetAverageTemp();
            DisplayResults(highestTemp, lowestTemp, averageTemp);
        }
        static void DisplayResults(double high, double low, double avg)
        {
            Console.Write("Highest Temp: " + high);
            Console.Write("Lowest Temp: " + low);
            Console.Write("Average Temp: " + avg);
        }
    }
}

namespace TempApp
{
    class Temperature
    {
        private double[] temp;
        public Temperature()
        {
        }
        public Temperature(double[] temperature)
        {
            temp = temperature;
        }
        public double GetHighestTemp()
        {
            double highestTemp = temp.Max();
            return highestTemp;
        }
        public double GetLowestTemp()
        {
            double lowestTemp = temp.Min();
            return lowestTemp;
        }
        public double GetAverageTemp()
        {
            double averageTemp = temp.Average();
            return averageTemp;
        }
    }
}

收到空错误“未处理的异常: 系统.空异常: 值不能为空” C#

温度对象有 2 个构造函数,第一个是默认的无参数构造函数,第二个是获取参数并将其设置为临时字段的构造函数。

您使用的是无参数构造函数:

Temperature aTemperatureObject = new Temperature();
double[] temp = new double [7];

代码中没有将上述数组实际传递给aTemperatureObject对象的地方。

这就是您获得空引用异常的原因。

更改代码以使用其他构造函数,它应该可以解决问题。请注意,为此,必须先声明数组,然后才能实例化 Temperature 类:

double[] temp = new double [7];
Temperature aTemperatureObject = new Temperature(temp);

您将结果存储在 temp[] 中,但从不在 TemperatureObject 中插入 temp[]。最简单的解决方法是删除Temperature aTemperatureObject = new Temperature();初始值设定项,在 for 循环后插入Temperature aTemperatureObject = new Temperature(temp);

相关文章: