2013-10-05 202 views
-7

所以我不明白枚舉是什麼,它是不是像一個數組,它可以具有所有不同的數據類型,也可以有其他類似數組的對象?對不起,如果這不是一個好的格式,但這是唯一得到答案的體面plkace。什麼是Java枚舉?

+0

你也許可以在其他地方找到幫助。您閱讀過哪些特定文檔,以及需要哪些具體文檔的幫助? –

+0

我建議你再次閱讀Java教程。 –

+0

可能的重複[爲什麼和爲什麼:java枚舉](http://stackoverflow.com/questions/4709175/why-and-what-for-java-enum) –

回答

1

創建枚舉與文件名EnumDay.java

public enum EnumDay { 
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,NAVEED 
} 

,並用文件名TestClass的EnumTest.java

public class EnumTest { 
EnumDay day; 

public EnumTest(EnumDay day) { 
    this.day = day; 
} 

public void tellItLikeItIs() { 
    switch (day) { 
    case MONDAY: 
     System.out.println("Mondays are bad."); 
     break; 

    case FRIDAY: 
     System.out.println("Fridays are better."); 
     break; 

    case SATURDAY: 
    case SUNDAY: 
     System.out.println("Weekends are best."); 
     break; 

    case NAVEED: 
     System.out.println(day + " is best."); 
     break; 

    default: 
     System.out.println("Midweek days are so-so."); 
     break; 
    } 
} 

public static void main(String[] args) { 
    EnumTest firstDay = new EnumTest(EnumDay.MONDAY); 
    firstDay.tellItLikeItIs(); 
    EnumTest thirdDay = new EnumTest(EnumDay.WEDNESDAY); 
    thirdDay.tellItLikeItIs(); 
    EnumTest fifthDay = new EnumTest(EnumDay.FRIDAY); 
    fifthDay.tellItLikeItIs(); 
    EnumTest sixthDay = new EnumTest(EnumDay.SATURDAY); 
    sixthDay.tellItLikeItIs(); 
    EnumTest seventhDay = new EnumTest(EnumDay.SUNDAY); 
    seventhDay.tellItLikeItIs(); 
    EnumTest eigththDay = new EnumTest(EnumDay.NAVEED); 
    eigththDay.tellItLikeItIs(); 
} 
} 
2

引述官方的Java文檔本身位置:

枚舉類型是一種特殊的數據類型,使一個變量是一組預定義的常量。該變量必須等於爲其預定義的值之一。常見的例子包括指南針方向(NORTH,SOUTH,EAST和WEST的值)和一週的日子。

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

0

一個java枚舉類似於類,但主要用於常量。它使用構造函數,就像一個類。我認爲了解枚舉如何工作的一個好方法就是看一個例子。這是我在學習時寫下自己的一個小例子。

public class UseEnum { 
public enum Colors { 
    RED("red", 1), BLUE("blue", 2), GREEN("green", 3), 
    YELLOW("yellow", 4), ORANGE("orange", 5), PURPLE("purple", 6), 
    PINK("pink", 7), WHITE("white", 8), BLACK("black", 9); 
    private String color = ""; 
    private int id; 
    private Colors(String color, int id) { 
     this.color = color; 
     this.id = id; 
    }  
    private String getColor() { 
     return color; 
    }  
    private int getId() { 
     return id; 
    } 
} 
public static void main(String[] args) { 
    while(true){ //infinite loop 
     UseEnum ue = new UseEnum(); 
     ue.findColor(option); 
    } 
} 
private static int option; 
private UseEnum() { 
    try{ 
     Scanner s = new Scanner(System.in); 
     System.out.print("Enter an ID: "); 
     option = s.nextInt(); 
    }catch(Exception e){ 
     System.out.println("\terror: invalid number"); 
     System.exit(1); 
    } 
} 
private void findColor(int id) { 
    boolean found = false; 
    if(id == 10) 
     System.exit(0); 
    for(Colors c : Colors.values()) { 
     if(c.getId() == id) { 
      System.out.println("\t"+c.getColor()); 
      found = true; 
      break; 
     } 
    } 
    if(found != true) 
     System.out.println("\tinvalid"); 
} 

}

可以枚舉在switch語句,這使得它們非常有用的使用。

我推薦這篇文章作進一步閱讀:javarevisited