方法找出热量最高的产品c#

本文关键字:方法 | 更新日期: 2023-09-27 18:20:10

我必须找到热量最高的产品。我的程序知道打印所有含有卡路里的产品,现在我正在研究如何只打印数字最高的产品。

我有我的课食物:

 class Food : Product{
 private NutritionalData nutritionalData;
    private DateTime expirationTerm;
    public FoodCategory Category;
    public Food(int ProductId, string SKU, string Name, decimal Price, string Description, string Producer,
        NutritionalData nutritionalData, FoodCategory Category, DateTime expirationTerm)
        : base(ProductId, SKU, Name, Price, Description, Producer)
    {
        this.nutritionalData = nutritionalData;
        this.Category = Category;
        this.expirationTerm = expirationTerm;
    }
    public Food() { }
 public NutritionalData GetNutritionalData()
    {
        return nutritionalData;
    }
    public int GetCalories()
    {
        return nutritionalData.Calories;
    }
    public override void PrintCalories()
    {
            int i = this.GetCalories();
            Console.WriteLine("Product: {0}, Calories: {1},ProductId: {2}", this.GetName(), i, this.GetProductId());
    }
    }

//这里我有一些类和一些结构,但与我的想法无关,所以我不把所有的东西都放在这里。主要内容如下:

class Program
{
    static void Main(string[] args)
    {
        Product f = new Food(1, "a", "Food", 15, "Good Quality", "Sana",new NutritionalData(2,12,1,3,2) //(2=calories,12=,1,3,2=doens't matter,
            FoodCategory.Meat, new DateTime(2015,4,12));
        Product f1 = new Food(2, "v", "Pizza1", 2, "Bad Quality", "Ariel", new NutritionalData(8, 17, 5, 3, 2),
            FoodCategory.Meat, new DateTime(2015, 4, 11));
        f.PrintCalories();
        f1.PrintCalories();
    }
}
}

很抱歉,如果你不理解很多东西,但首先我只想在这里放一些东西,但后来我认为你不会什么都不理解。重要的是,我不知道如何验证所有的产品,例如,如果我有第一个f,它的卡路里数为2,如果下面的产品的卡路里数大于或小于这个,我该如何验证,以此类推?使用GetCalories方法,我会将热量退还给产品,但现在我被卡住了。一些想法?如果你不明白我想做什么,请告诉我。谢谢。

更新:我尝试了一些东西,但没有结果:

 public override void PrintCalories()
    {
        int max = 0;
        int i = this.GetCalories();
        if (i > max)
        {
            Console.WriteLine("Product: {0}, Calories: {1},ProductId: {2}", this.GetName(), i, this.GetProductId());
        }
        else
            Console.WriteLine("Product: {0}, Calories: {1},ProductId: {2}", this.GetName(), max, this.GetProductId());
        max = i;
    }

方法找出热量最高的产品c#

为了打印热量最高的产品,在处理新产品实例时,您需要以某种方式跟踪热量。

我建议你询问每个实例,并保留对卡路里值最高的实例的引用。例如:

var highestCaloriesSoFar = f;  // store your first instance since you haven't seen any others yet.
// --- whatever code you ultimately have in between getting each instance. 
if (nextInstance.NutritionData.Calories > highestCaloriesSoFar.NutritionData.Calories) 
    highestCaloriesSoFar = nextInstance;

然后你可以在最后打印这个实例。

现在,我这么说并没有真正知道你最终将如何编码,因为看起来你的Main中有一项工作正在进行中。您似乎不太可能直接在主方法中硬编码一堆实例,更有可能接收它们或从外部构建它们,然后从该集合中生成输出。因此,您可以使用上面的代码来获得一个Food实例的集合,并返回热量最高的实例:

private static Food GetHighestCalories(IEnumerable<Food> fromCollection)
{
    Food highestCaloriesSoFar = null;
    foreach (Food nextInstance in fromCollection)
    {
        if(highestCaloriesSoFar != null)
        {
            if (nextInstance.NutritionData.Calories > highestCaloriesSoFar.NutritionData.Calories) 
                highestCaloriesSoFar = nextInstance;
        }
        else // first loop iter.
        {
            highestCaloriesSoFar = nextInstance;
        }
    }
    return highestCaloriesSoFar;
}