2011-09-07 143 views
3

我對Java編程非常陌生,並且在枚舉類型工作時遇到了一些問題。在我的節目我已經宣佈了下述靜態變量:Java中枚舉類型的問題

class Employee { 

enum Gender {MALE, FEMALE}; 
static final double NORMAL_WORK_WEEK = 37.5; 
static int numberOfFemales; 
static int numberOfMales; 
Gender sex; 
} 

我添加了一個方法,用於打印的相關信息,以及下面的方法:

static void registerEmployeeGender(Gender sex) { 
switch(sex) { 
case MALE: 
numberOfMales++; break; 
case FEMALE: 
numberOfFemales++; break;} 
} 

在我的客戶,我attemt運行該程序,我無法使用這最後一種方法。假設我創建了一個對象Employee1,然後鍵入:

Employee1.registerEmployeeGender(FEMALE); 

然後我收到錯誤消息:FEMALE無法解析爲變量。

什麼是導致此錯誤消息?就像我說的,我對Java很新,這是我第一次嘗試使用枚舉類型,所以我可能犯了錯誤。如果有人能給我任何幫助,我將不勝感激。

當然,我只在這裏發佈了部分程序,但這是唯一給我提供錯誤信息的部分。如果你需要我發佈更多的程序,或者所有這些,請告訴我。

在此先感謝您的幫助!

+3

嘗試Gender.FEMALE – Marvo

回答

7

使用

Employee1.registerEmployeeGender(Gender.FEMALE); 

,並確保你讓下面的import語句在你的代碼

import static com.example.Employee.Gender.*; 
+0

第二屆帕然而,你從我的答案中匆匆複製的那個不適用於你最初提出的例子。只要你已經指定了枚舉名,你就不需要「靜態導入」。 – BalusC

+0

他的回答在你的2分鐘前到達。他怎麼能複製它? – bos

1

要訪問的枚舉項目使用這樣的 「Gender.FEMALE」

This可能會幫助您更多。

+0

非常感謝!我只是忘了添加性別。女性之前像你指出的一樣!我感謝您的幫助! – Kristian

5

您需要static import爲了枚舉值可以靜態地用他們的方式爲您呈現:

import static com.example.Employee.Gender.*; 

通常的做法,然而,是剛剛導入枚舉

import com.example.Employee.Gender; 

並指定枚舉的名稱,以及:

Employee1.registerEmployeeGender(Gender.FEMALE); 
+0

很好的答案。 'import static'部分取消了真正的問題,即'enum'實例需要合格 –