سؤال

تعلم جافا وتواجه مشكلة مع طريقة المقارنة.لقد جربت جوجل ولكن لم يكن هناك الكثير من المساعدة فيما أحتاج إليه. ما أحتاج إليه هو

// compareTo public int compareTo(Student other) 
// is defined in the Comparable Interface
    // and should compare the student ID's  (they are positive integers).
// Must be able to handle null "other" students. A null student should be
// ordered before any student s so the s.compareTo(null) should be positive.

لذلك، في الأساس، CompareTo()، في النهاية، ستساعدني هذه الطريقة في ترتيب طلابي بناءً على معرفات الطلاب من الأدنى إلى الأكبر..أنا عند جدار من الطوب وأحتاج فقط إلى بعض المساعدة في الاتجاه الصحيح

public int compareTo(StudentIF other) {
    // do stuff
    return 0;
}
هل كانت مفيدة؟

المحلول

هناك برنامج تعليمي جيد حول التنفيذ compareTo() هنا.ومع ذلك، عندما أتعلم كيفية القيام بشيء ما بشكل عام، غالبًا ما يكون من المفيد بالنسبة لي أن أرى كيفية تنفيذه في حالة الاستخدام المحددة الخاصة بي - لذا، في هذه الحالة، أتخيل أن شيئًا كهذا سيكون كافيًا:

public int compareTo(StudentIF other) {
    if (other == null) {return 1;} //satisfies your null student requirement
    return this.studentId > other.studentId ? 1 : 
                            this.studentId < other.studentId ? -1 : 0;
}

compareTo() من المتوقع أن يُرجع قيمة موجبة إذا كان other الكائن أصغر نسبيًا، وقيمة سالبة إذا كان أكبر نسبيًا، و0 إذا كانا متساويين.على افتراض أنك على دراية بالمشغل الثلاثي، سترى أن هذا هو ما يفعله.إذا لم تكن كذلك، فسيكون المعادل if/else كما يلي:

    public int compareTo(StudentIF other) {
        if (other == null) { return 1; } //satisfies your null student requirement
        if (this.studentId > other.studentId) return 1; 
        else if (this.studentId < other.studentId) return -1; 
        else return 0; //if it's neither smaller nor larger, it must be equal
}

نصائح أخرى

كما واجهة compareTo المطلوبة:

عدد صحيح سلبي، صفر، أو عدد صحيح موجب لأن هذا الكائن أقل من، يساوي، أو أكبر من الكائن المحدد.

بالإضافة إلى متطلباتك الإضافية للمقارنة الفارغة، يمكننا ببساطة التحقق مما إذا كانت المعلمة الأخرى لاغية أم لا، ثم قم بالطرح للمقارنة.

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top