查找具有最高卡路里数的产品的方法c#

时间:2015-11-02 14:01:02

标签: c#

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

我有我的班级食物:

 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();
    }
}
}

对不起,如果你不了解很多东西,但首先我想在这里放一些东西,但后来我觉得你什么都不懂。重要的是我不要&# 39;不知道如何验证所有产品,例如,如果我有第一个f,它有nr卡路里= 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;

    }

1 个答案:

答案 0 :(得分:1)

为了打印具有最高卡路里的产品,您需要在处理新产品实例时以某种方式跟踪该产品。

我建议您查询每个实例并维护对具有最高卡路里值的实例的引用。例如:

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中的内容正在进行中。您似乎不太可能直接在主方法中直接硬编码一堆实例,更可能是您将接收它们或在外部构建它们然后从<生成输出 / em>那个集合。因此,您可以使用上面的代码获取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;
}