2017-10-05 5 views
-1

Je suis novice en programmation et j'ai passé le dernier nombre de jours à essayer de saisir l'utilisateur, de le stocker dans un arrail détails spécifiques. J'apprécierais vraiment que quelqu'un fasse la lumière sur l'endroit où je me trompe. Je ne peux pas sembler être en mesure d'accéder à l'entrée de la classe des employés et de le stocker dans l'arraylist dans la méthode principale.Je saisis l'entrée de l'utilisateur en utilisant une classe d'employés, la stocke dans un tableau et l'affiche en méthode principale - Java

Merci.

public class OctEmployeeArray{ 

public void menu(){ 

    boolean breakOut= false; 
    while(breakOut == false){ 
     System.out.println("=====================================");    
     System.out.println("=====================================");   
     System.out.println("EMPLOYEE HOLIDAY ENTITLEMENT PROGRAM"); 
     System.out.println("Please chose the appropriate option: "); 

     System.out.println("====================================="); 
     System.out.println("====================================="); 
     System.out.println("1) Enter new employee details:"); 
     System.out.println("2) Display the employee average age:"); 
     System.out.println("3) Display information on specific employee:"); 
     System.out.println("4) Display all database accounts:"); 
     System.out.println("5) Exit the program:"); 
     System.out.println("====================================="); 

     Scanner in = new Scanner(System.in); //scanner assigned to 'in' 
     String choice = in.nextLine(); //user input stored in choice 

     switch (choice){ 
      case "1": System.out.println("You chose the 'add employee' input"); 
       Employee e1= new Employee(); 
       e1.addEmployee(); 
       break; 

      case "2": 
       System.out.println("You chose the b input"); 
       break; 

      case "3": 
       System.out.println("You chose the c input"); 
       //searchspecficEmployee(); 
       break; 

      case "4": 
       System.out.println("You chose the 'display all' input"); 
       //displayAll(); 
       break; 

      case "5": 
       System.out.println("You chose to Exit."); 
       breakOut= true; 
       break; 

      default: 
       System.out.println("The input is not accurate"); 
       break; 
     } 
    } 
} 

public class Employee { 
    private String staffName; 
    private int staffNumber; 
    private int staffAge; 
    private int yearStarted; 
    private String role; 


    public Employee(String staffName, int staffAge, int yearStarted, int staffNumber, String role){ 
     this.staffName= staffName; 
     this.staffNumber= staffNumber; 
     this.staffAge= staffAge; 
     this.yearStarted= yearStarted; 
     this.role= role;    
    } 

    public Employee(){ 

    } 

    public int getAge(){ 
     return staffAge; 
    } 

    public String getName(){ 
     return staffName; 
    } 

    public int getStaffNum(){ 
     return staffNumber; 
    } 

    public int getStartYear(){ 
     return yearStarted; 
    } 

    public Employee addEmployee(){//this asks the new employee questions, saves them in a employee object called e 

     Scanner in= new Scanner(System.in); 
     //Employee d= new Employee(); 
     System.out.println("Please enter your Full name:"); 
     String name = in.nextLine(); 
     System.out.println("Please enter your age:"); 
     int age= Integer.parseInt(in.nextLine()); 
     System.out.println("Please enter your staff number:"); 
     int staffNum= Integer.parseInt (in.nextLine()); 
     System.out.println("Please enter year of current employment:"); 
     int startYear=Integer.parseInt(in.nextLine()); 
     System.out.println("Please enter role employment:"); 
     String role=in.nextLine(); 

     Employee e= new Employee(name, age, startYear, staffNum, role);// puts all the varibles and puts them inside e and returns it 
     return e; 
    } 

} 

    public static void main(String[] args) { 
     ArrayList<Employee> alist= new ArrayList();// arraylist created to save employee objects 
     OctEmployeeArray o= new OctEmployeeArray();// object created for access to main menu  
     o.menu();//display main menu 

     Employee em= new Employee();// create employee object to access add employee method 
     alist.add(em.addEmployee); 

     for(Employee count : alist){ 
      System.out.println(count.getName()); 
      System.out.println(count.getStaffNum()); 
     } 
    } 
} 
+0

Pouvez-vous restreindre le code aux zones spécifiques du problème et expliquer ce qui ne fonctionne pas? http://idownvotedbecau.se/ –

+1

"alist.add (em.addEmployee);" changez-le en "alist.add (em.addEmployee());" mauvaise méthode appelez –

+0

Il vaudra mieux si vous demandez quelle erreur vous obtenez ou où est-ce que vous avez bloqué pour donner la sortie au lieu de mettre tout le code à vérifier par les techniciens. En voyant votre code, je pense que ce sera un bon si vous allez séparer votre code. Prenons un exemple: Vous avez créé 'Employee' en tant que classe pour avoir des données et ajouté la méthode' addEmployee' dans cette même classe, ce que je pense que vous pouvez prendre en tant que modèle seulement et avoir une classe différente pour votre logique métier. –

Répondre

0

Vous créez une nouvelle instance Employee dans la méthode addEmployee(). Ce n'est pas faux. Mais le fait que cette méthode soit à l'intérieur de la classe Employee est sémantiquement un non-sens (désolé) - et je pense que c'est aussi pourquoi ça ne marche pas (c'est une coïncidence, malheureusement beaucoup de non-sens sémantique fonctionne.).

Ce que vous devez faire est de supprimer la méthode addEmployee() de la classe Employee et déplacez-la dans la classe contenant votre tableau Employee. Ne créez pas de nouvelles instances Employee dans la classe Employee.