2011-12-02 57 views
3

我會從文件加載一個字符串並放入對象枚舉。從文件對象加載枚舉

我創造成一類這個:

Passenger p=new Passenger(p_name,What should i put here)? 

這裏是:

public Passenger{ 

private String pass_name; 
public enum State{ 

b,c,d; 

}; 
.... 

State reser; 

public Passenger(String n,State r) 
     pass_name=n; 
     reser=r; 
} 
在另一個文件我想讀一個文件,並把字符串中我可以創建一個對象乘客這樣的方式

我的文件結構如下:

cod 
passenger_name 
reverved 

cod和passenger會被String代替,而保留應該通過枚舉來呈現。我會讀文件:

BufferedReader reader=new BufferedReader(new FileReader(fname)); 

String cod=reader.readLine(); 
while(cod!=null){ 
     String p_name=reader.readLine(); 
     how can i load a enum type? 

     Passenger p=new Passenger(p_name,What should i put here)? 
     cod=reader.readLine(); 

} 
+0

請嘗試使用可編譯的代碼示例並顯示您的問題,或者至少不需要大量修改即可運行它們。 – millimoose

+0

不幸的是我沒有代碼編譯。我的問題是我不知道如何從文本文件中讀取字符串,並在類型枚舉中加載此字符串時,我創建對象乘客 – Mazzy

+0

您的第一個示例代碼也缺少'class 'Passenger'之前。它有一個多餘的行,用'....'表示缺少的代碼 - 要麼作出評論,要麼只是將它全部放在一起,如果不相關。你也缺少構造函數中的開頭'{'''。 「我如何加載枚舉類型?」和「我應該在這裏放什麼」應該在評論中 - 語法突出顯示也使佔位符更容易被發現。你的第二個代碼示例有一個以'?'結尾的行,我猜這是爲了結束這個問題。 – millimoose

回答

3

使用YourEnumType.valueOf你從文件中讀取到枚舉字符串轉換:

public class Passenger { 
    public static enum State { 
     New, 
     Reserved, 
     Paid 
    } 

    private String name; 
    public State state; 

    public Passenger(String name, State state){ 
     this.name = name; 
     this.state = state; 
    } 

    public String toString() { 
     return String.format("Passenger{name='%s', state=%s}", name, state.name()); 
    } 
} 

class Main { 
    public static void main(String[] args) { 
     // line read from file 
     String stateString = "Reserved"; 
     // convert string into state 
     Passenger.State state = Passenger.State.valueOf(stateString); 

     // create the passenger 
     Passenger pass = new Passenger("John Doe", state); 
     System.out.println(pass); 
    } 
} 

(我把做的示例代碼清潔版本的自由。 )

確保文件中的字符串與您的枚舉常量的名稱相同,包括大寫字母,並且不包含額外的空格。

+0

謝謝,現在一切都清楚了。感謝這麼多 – Mazzy

+0

@ user1055637您應該接受最終解決問題的答案,並在投票按鈕下面打上覆選標記。 – millimoose