您好我在编程世界中相当新,我对一个简单的程序有一点问题。我创建了一个数组,并通过构造函数将其传递给名为" 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;
}
}
}
答案 0 :(得分:1)
将结果存储在temp []中,但是永远不要在aTemperatureObject中插入temp []。最简单的修复,删除Temperature aTemperatureObject = new Temperature();
初始化程序,在for循环后插入Temperature aTemperatureObject = new Temperature(temp);
。
答案 1 :(得分:1)
你的Temperature对象有2个构造函数,第一个是默认的无参数构造函数,第二个是获取参数并将其设置为临时字段的构造函数。
您正在使用无参数构造函数:
Temperature aTemperatureObject = new Temperature();
double[] temp = new double [7];
您的代码中没有地方可以将上面的数组实际传递给aTemperatureObject
对象。
这就是你得到空引用异常的原因。
更改您的代码以使用其他构造函数,它应该解决问题。请注意,为了实现这一点,您必须先声明数组,然后才能实例化Temperature类:
double[] temp = new double [7];
Temperature aTemperatureObject = new Temperature(temp);