【问题标题】:Comparing 2 Object properties in a Class比较一个类中的 2 个对象属性
【发布时间】:2014-12-15 12:01:37
【问题描述】:

我有一个包含多个属性的 Person 类。该类的多个实例位于数组 PersonList 中。

是否可以比较数组中对象的不同实例的属性?

例如:找出谁是最大的,谁是最小的?

 public class Persoon
{
    public Persoon()
    {
    }

    //Properties maken
    public Persoon(string naam, Int16 gewicht, Int16 lengte, DateTime geboortedatum)
    {

        this.Naam = naam;
        this.Gewicht = gewicht;
        this.Lengte = lengte;
        this.Geboortedatum = geboortedatum;
    }




    public string Naam { get; set; } // AutoProperty

    public double Gewicht { get; set; } // AutoProperty

    public int Lengte { get; set; } // AutoProperty

    public DateTime Geboortedatum { get; set; } // AutoProperty

    public double BerekenBmi()
    {

        //BMI formule: Gewicht in kilogram / (Lengte in meter * Lengte in meter)
       return Math.Round(Gewicht/((Lengte/100.0) * (Lengte/100.0)),1);
    }

    public string BmiStadiumBerekenen()
    {


        if (BerekenBmi() < 18.5) return "ondergewicht";
        if (BerekenBmi() >= 18.5 && BerekenBmi() <= 24.9) return "normaal";
        if (BerekenBmi() >= 25 && BerekenBmi() <= 29.9) return "overgewicht";
        if (BerekenBmi() >= 30 && BerekenBmi() <= 34.9) return "obesitas I";
        if (BerekenBmi() >= 35 && BerekenBmi() <= 39.9) return "obesitas II";
        else return "morbide obesitas";


    }



    public int BerekenLeeftijd()
    {

        TimeSpan leeftijd = DateTime.Today - Geboortedatum;

        return (int) leeftijd.TotalDays;
    }


}

我需要比较最年长和最年轻的人,这样我才能计算出他们之间的时间量。我以前只用两个没有数组的人做过这个,但现在我需要和他们一起做。

【问题讨论】:

  • 你能至少发布你的“类”吗?也许你尝试过的一些代码?
  • 你可以iterate througharray/list/collection。

标签: c# testing


【解决方案1】:

当然可以,解决方案就在您的问题中!您必须使用 compareTo() 方法。 您必须在 Person 类中实现 compareTo() 方法。

public class Person implements Comparable<Person>{...}

然后你只需添加方法

@Override
public int compareTo(Person p) {...}

这个方法需要另一个Person对象的参数,所以你可以选择比较人的方式。比如你说要比较每个Person的年龄,只要在compareTo()方法里面放一个if close语句就可以了。

 int result;
    if (this.age < p.getAge()) {
        esito = -1;
    }
    else if(this.age = p.getAge()){
        esito = 0;
    }
    else{
        esito = 1;
    }
 return esito;

此方法返回一个 int 数:负整数、零或正整数,因为此对象小于、等于或大于指定对象。

来源:

http://docs.oracle.com/javase/7/docs/api/

学校课程

:)

【讨论】:

  • 谢谢,但它在 csharp @marco
【解决方案2】:

可能是这样的(使用 Linq):

var youngest = personList.OrderBy(p => p.Age).First();

(请注意,这是假设您的列表中有一些东西要开始)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多