2014-04-07 63 views
0

我將如何更改使用用戶輸入的對象的名稱。前者爲 。我要求用戶輸入他們的id作爲一個字符串。 我想然後用它來創建一個構造函數。如何使用用戶輸入更改對象的名稱?

例:

RefUnsortedList<Patients> NewList = new RefUnsortedList<Patients>(); 
Patients entry1=null; 
System.out.println("Please enter patient's ID: "); 
      String TargetID = scan.next(); 

我想設置

Patients entry1 = null; 

,使其

Patients "the user input here" = null; 
+0

我認爲這不是一個良好的編程習慣。用戶不應該命名變量。爲此更好地創建一個屬性。 – eventHandler

回答

1

沒有動態變量在Java中,他們在被宣佈源代碼。

您可以嘗試使用Map併爲變量的每個實例分配一個鍵。

Map patientMap = new HashMap(); 
patientMap.put("entry1", new Patients()); 
patientMap.put("the user input here", new Patients()); 

然後,當你要檢索的患者可以使用:

Patients patient = patientMap.get("the user input here"); 
1

你真正想要做的是:

Map<String, Patient> patients = new HashMap<>(); 
patients.put("entry1", /* [insert Patient object here] */); 

注意事項:

  • 代表患者的班級應命名爲Patient,而不是Paitents。一個班級的名稱應該是實例,而不是他們的集合

  • 是沒有意義的地圖中的值設置爲null,除非您使用的是特殊類型的地圖,允許null鍵(並使其從沒有該鍵的條目有意義的不同)。

+0

Map類沒有'.set'方法,它是'.put'來將對象添加到地圖 –

+0

@MthetheWWilson謝謝,我誤打錯了。 – AJMansfield

+0

並且您在代碼示例中錯誤輸入了患者和患者。 –

0

我假設你正在做的事情是這樣的:

你的病人類別:

public class Patient { 
    private String patientID; 

    public Patient(String patientID) { 
     this.patientID = patientID; 
    } 

    public String getPatientID() { 
     return patientID; 
    } 

    public void setPatientID(String patientID) { 
     this.patientID = patientID; 
    } 
} 

...和你的類,您正在使用運行控制檯:

public class Main { 

    public Main() { 
    } 

    public static void main(String[] args) { 
     Scanner console = new Scanner(System.in); 
     System.out.println("System is ready to accept input, please enter ID : "); 
     String ID = console.nextLine(); 
     Patient patient = new Patient(ID); 
     //do some fancy stuff with your patient 
    } 

} 

這將是一個非常基本的例子。

當你正在學習編碼時,一定要考慮如何命名你的類。調用你的類「患者」會讓我期望你在這個java類的每個實例中都持有一組「患者」,而不是每個實例的單個「患者」。

關於最新的答案,包括地圖,更新後的「主」類看起來是這樣的:

public class Main { 
    static Map<String, Patient> patients = new HashMap<String, Patient>(); 

    public Main() { 
    } 

    public static void main(String[] args) { 
     Scanner console = new Scanner(System.in); 
     System.out.println("System is ready to accept input, please enter ID : "); 
     String id = console.nextLine(); 
     patients.put(id, new Patient(id)); 
    } 
}