2013-07-21 56 views
0

,所以我試圖用一種或同時方法,打印出的所有對象的主要方法。(安娜,考特尼,阿什利)如何在java中使用for或while方法調用枚舉?

  public class JavaApplication56 { 

     public enum details { 

    Anna(" blue ", " blue"), 
    Courtney(" red", " black"), 
    Ashley(" yellow ", " green"); 

    String hairColor; 
    String eyeColor; 

    details(String hairColor, String eyeColor) { 

     this.hairColor = hairColor; 
     this.eyeColor = eyeColor; 
    } 

    public String getHair() { 
     return hairColor; 

    } 

    public String getEye() { 


     return eyeColor; 
    } 
} 

我得到在我的主要方法的錯誤說二元運算符的操作數類型很差。 第一類型int,第二類型details []。

public static void main(String[] args) { 

    JavaApplication56 ja = new JavaApplication56(); 

    for (int person = 0; person < details.values(); person++) { 

     System.out.println(details.values()+details.); 
    } 

} 
} 
+0

你將要學習和遵循Java的命名約定。所有類和枚舉名稱都應以大寫字母開頭。 Enum常量本身應該是全部上限。 –

+0

此外,枚舉是常量(當您準備程序時,您已經知道數據)。您嘗試存儲的數據似乎是可變的(您不知道確切的數據 - 每次可能會有所不同)。在這種情況下,你應該使用List,HashMaps等其他東西。在這種情況下,顏色本身可能是一個枚舉,因爲頭髮和眼睛都有固定數量的顏色,並且你已經知道它們。但是每個人的姓名,頭髮顏色和眼睛顏色都可以存儲在HashMap中,名稱爲鍵,顏色枚舉爲值。 – ADTC

回答

0

就像這樣:

public static void main(String[] args) 
{ 

    JavaApplication56 ja = new JavaApplication56(); 

    for (int person = 0; person < details.values().length; person++) 
    { 
     System.out.println(details.values()[person].name()); 
    } 

} 
+0

它的工作,謝謝。 – pur3extrme

1

或者更簡單地說:

// details should be re-named Details 
for (Details detail : Details.values()) { 
    System.out.println(detail); // does it have a toString() override? 
} 
+0

_「它是否有toString()重寫?」_在這種情況下,有重寫會有幫助,但**不是必需的。由於沒有覆蓋,它只是'Object.toString()',在枚舉中覆蓋它將允許像'{return「Hair:」+ hairColor +「,Eye:」+ eyeColor;}':) – ADTC