2017-04-01 10 views
0
public class seasons{  

     public enum compare{ 

       summer(0), spring(1), winter(3), fall(4); 

       (assume the constructor is already coded) 
     } 
} 

2つのシーズンを引数としてとり、シーズンの値を比較する方法を作成しますか?javaで列挙型を比較す​​る

+3

[比較Javaの列挙型メンバー?:==または等号()]の可能性のある重複します(http://のstackoverflow。 com/questions/1750435/comparison-java-enum-members-or-equals) –

+1

同等か、列挙型内の相対位置を比較することを意味しますか? –

+0

Javaの命名規則に従ってください。 –

答えて

0

public static void main(String[] args) 
    { 
     compareSeasons(Seasons.Summer, Seasons.Summer); //returns true; 
     compareSeasons(Seasons.Summer, Seasons.Autumn); //returns false 
    } 

private enum Seasons{ Summer, Autumn, Winter, Spring; } 

private static boolean compareSeasons(Seasons seasonOne, Seasons seasonTwo){ 
     return seasonOne == seasonTwo; 
    } 
0

は、コード内のコメントを参照してください==演算子で比較

public enum Seasons{ 

    summer(0), spring(1), winter(3), fall(4); 

    int order; 
    Seasons(int order){ 
     this.order = order; 
    } 

    //a method that fits the signature of Comparator<T> 
    //https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html 
    public static int compare(Seasons s1, Seasons s2) { 

     //Box int to an Integer object, and delegate comparison to its 
     //comareTo 
     return new Integer(s1.order).compareTo(s2.order); 

     //or as DarkRift 3 proposed 
     //return Integer.compare(s1.order, s2.order); 
    } 

    public static void main(String[] args) { 

     //if you just want to check for equality you can do it simply by 
     //using the == operator 
     System.out.println(summer == summer); //returns true; 
     System.out.println(summer == winter); //returns false 

     //if you want to compare based on the int property, use a comperator 
     System.out.println(compare(summer, summer));//return 0 meaning equal 
     System.out.println(compare(summer, winter));//return -1 meaning smaller 
     System.out.println(compare(winter,summer));//return 1 meaning bigger 
    } 
} 
+0

静的メソッドInteger.compare(s1.order、s2.order)を使用する方が、新しいIntegerオブジェクトを作成する必要がなく、2番目のオペランド値を別のIntegerオブジェクトに入れる必要がないため、より優れています。 – DarkRift

+0

ありがとう@DarkRift、私はこのオプションを追加しました – c0der

関連する問題