2016-08-30 3 views
-2

die Klasse ist meine Hauptklasse. Meine Arraylist ist der Typ von "Employee" und diese Arraylist enthält viele Elemente, die aus mehreren Objekten bestehen (Polymorphismus). Also möchte ich wissen, dass wenn der Benutzer einen Klassennamen eingibt, ich die Angestellten dieser bestimmten Klasse aus der Arraylist ausdrucken sollte. Wenn der Benutzer zum Beispiel "Chirurg" eingibt, sollte das Programm in der Lage sein, alle Mitarbeiter des Chirurgen aus der Arraylist auszudrucken. Bitte helfen Sie, danke im Voraus.So drucken Sie einen bestimmten Objekttyp aus einer abstrakten Klasse Arraylist in Java

import java.util.*; 


public class HospitalDatabase { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String q; 
     String w; 
     ArrayList<Employee> e = new ArrayList<Employee>(); 
     Employee s = new Surgeon("Christian Barnard", 2113211, "Cardiac", "Cardiology", 
       2000, "Yale University"); 
     Employee i = new ITSupport("Mickey Mouse", 11280, Department.IT, 26, "Mac OS"); 
     Employee n = new Nurse("Florence Nightingale", 54678, "Urgent Care", 
       "Emergency", false, HospitalWing.North); 
     Employee p = new PatientAccountsManager("Donald Duck", 32465, Department.PatientSupport, 
       99, true); 
     Employee s1 = new Surgeon("Sanjay Gupta", 42171, "Neurosurgery", 
       "Neurology", 500, "Duke University"); 
     Employee n1 = new Nurse("Mary Breckinridge", 56536, "Gynecology", "Midwife", 
       true, HospitalWing.West); 


     e.add(s); 
     e.add(i); 
     e.add(n); 
     e.add(p); 
     e.add(s1); 
     e.add(n1); 

     System.out.println(e.toString()); 
     System.out.println(Employee.numEmployees); 
     System.out.println("-------------******--------------"); 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter a name: "); 
     q = scan.nextLine(); 
     boolean j = false; 
     System.out.println("***************"); 

     for(Employee v: e){ 
      if(v.name.contains(q)){ 
       System.out.println(v.name); 
       j = true; 
      } 
     } 
     if(j == false){ 
      System.out.println("Name not found"); 
     } 
     System.out.println("----------------**************---------------"); 

     Scanner f = new Scanner(System.in); 
     System.out.println("Enter the class of employees: "); 
     w = f.nextLine(); 
     System.out.println("***************************"); 

     //PLEASE SHOW THE CODE HERE 
    } 
} 
+2

Werden Sie versuchen, Ihr Problem zu programmieren? Coding bis zum Problem, aber nicht das eigentliche Problem zu codieren hilft Ihnen nicht wirklich viel hier. –

+0

Sie können Instanz des Bedieners versuchen – Kode

+0

Ich möchte auch sehen, dass Sie sich bemühen, dieses Problem zu lösen. Ich bin nicht daran interessiert, einfach nur Code für andere Leute zu schreiben, besonders wenn es nicht wirklich hart ist. – markspace

Antwort

2

Sie können dazu The Reflection API verwenden. Zum Beispiel:

String className1 = e.getClass().getSimpleName(); 
String className2 = e.getClass().getName(); 
String className3 = e.getClass().getCanonicalName(); 

Wählen Sie eine, die Ihnen am besten passt this Artikel betrachten.

+0

Vielen Dank – supa

+0

Ich habe versucht, zu verbessern, aber ich muss ein hohes Ansehen haben – supa

+0

Klicken Sie einfach unter der Abstimmung buton, bitte akzeptieren. Wie im Artikel: http://meta.stackoverflow.com/questions/251078/how-to-update-and-accept-answers –

Verwandte Themen