2013-06-21 1 views
1

У меня возникли проблемы с передачей элементов в массиве, который содержит имена и числа в другом классе, где будут выполняться вычисления. Это то, что у меня есть для классов.Передача элементов массива между различными классами в Java

public class Employee { 
    private int sales; 
    private String name; 

    public Employee(String name, int sales){ 
     this.name = name; 
     this.sales = sales; 
    } 
    public String getName(){ 
     return this.name; 
    } 
    public int getSales(){ 
     return this.sales; 
    } 
} 

Этот класс предназначен для хранения имени и продаж для массива. Вот массив в отдельном классе.

import java.util.Scanner; 

public class EmployeeArray { 

    public static int employee() { 

     Scanner input = new Scanner(System.in); 

     int numEmp; 
     System.out.println("Enter how may employees to be compared: "); 
     numEmp = input.nextInt(); 
     input.nextLine(); 
     Employee[] employees = new Employee[numEmp]; 

     for (int i = 0; i < numEmp; i++) { 
      System.out.print("Enter your name: "); 
      String employeeName = input.nextLine(); 
      System.out.println(); 
      System.out.print("Enter your annual sales: "); 
      int employeeSales = input.nextInt(); 
      input.nextLine(); 
      System.out.println(); 

      Employee employee = new Employee(employeeName, employeeSales); 
      employees[i] = employee; 
     } 
     Employee maxSeller = employees[0]; 
     for (int i = 0; i < employees.length; i++) { 

      System.out.println("Employee Name: " + employees[i].getName()); 
      System.out.println("Total sales: $" + employees[i].getSales()); 
      System.out.println(); 

      if (maxSeller.getSales() < employees[i].getSales()) { 
       maxSeller = employees[i]; 
      } 
     } 
     System.out.println(); 
     System.out.println("Top Seller is: " + maxSeller.getName()); 
     System.out.println("Top Sales are: $" + maxSeller.getSales()); 

     return maxSeller.getSales(); 

    } 
} 

Массив хранит значения и возвращает топ-продавца с именем maxSeller и получает для них имя и объем продаж. Теперь проблема, с которой я сталкиваюсь, заключается в том, что в отдельном классе мне нужно получить значения, хранящиеся в этом массиве, для выполнения некоторых вычислений. Я должен получить продажи maxSeller и сравнить их с продажами других продавцов в массиве. Форма там Я пытаюсь показать, насколько больше продаж другим нужно достичь равного или превосходить топ-продавца. Это проблема, с которой я сталкиваюсь. Я не знаю, как передать значения из этого массива в следующий класс, чтобы я мог выполнять вычисления. Есть предположения?

+1

, что это отдельный класс? Вы должны передать массив сотрудников в качестве параметра методу в любом другом классе, который вы создаете. Оттуда вы можете получить доступ к продажам или имени с помощью геттеров. – sunrize920

+0

. Вопросы, подобные этому, часто указывают на то, что непротиворечивое решение с точки зрения процедур не может быть легко адаптировано к объектно-ориентированной парадигме. Если бы вы перестали писать решение, как, например, вы писали программу BASIC, и начали думать об объектах, участвующих в вашей модели, и о поведении, которое вы хотели реализовать для этих объектов, такие проблемы, как «как передать массивы между процедурами», становятся а тем более проблема. – scottb

+0

Отдельный класс, где я использую продажи топ-продавца и применяю комиссию, чтобы найти общую компенсацию за этот год, затем сравните ее с общей компенсацией продавцов и скажите им, сколько еще им нужно продать, чтобы соответствовать верхней продавец возмещение. –

ответ

2

Вместо создания массива внутри статического метода вы можете сделать его членом EmployeeArray вы можете повторно использовать массив в статическом контексте (не рекомендуется) или создавать различные EmployeeArray с для хранения различных массивов сотрудников, это делает больше смысла в ООП. Грубый эскиз:

import java.util.Scanner; 

public class EmployeeArray { 
private Employee[] employees; 

public Employee[] getEmployees() { 
    return employees; 
} 

public void setUpArray() { 
    Scanner input = new Scanner(System.in); 

    int numEmp; 
    System.out.println("Enter how may employees to be compared: "); 
    numEmp = input.nextInt(); 
    input.nextLine(); 
    employees = new Employee[numEmp]; 

    for (int i = 0; i < numEmp; i++) { 
     System.out.print("Enter your name: "); 
     String employeeName = input.nextLine(); 
     System.out.println(); 
     System.out.print("Enter your annual sales: "); 
     int employeeSales = input.nextInt(); 
     input.nextLine(); 
     System.out.println(); 

     Employee employee = new Employee(employeeName, employeeSales); 
     employees[i] = employee; 
    } 
} 

public int getMaxSellerEmployeeSales() { 
    Employee maxSeller = employees[0]; 
    for (int i = 0; i < employees.length; i++) { 

     System.out.println("Employee Name: " + employees[i].getName()); 
     System.out.println("Total sales: $" + employees[i].getSales()); 
     System.out.println(); 

     if (maxSeller.getSales() < employees[i].getSales()) { 
      maxSeller = employees[i]; 
     } 
    } 
    System.out.println(); 
    System.out.println("Top Seller is: " + maxSeller.getName()); 
    System.out.println("Top Sales are: $" + maxSeller.getSales()); 
    return maxSeller.getSales(); 
} 

public static void main(String[] args) { 
    EmployeeArray google = new EmployeeArray(); 
    google.setUpArray(); 

    EmployeeArray ms = new EmployeeArray(); 
    ms.setUpArray(); 

    EmployeeArrayCalculatorAndManipulator eGoogle = new EmployeeArrayCalculatorAndManipulator(); 
    EmployeeArrayCalculatorAndManipulator eMS = new EmployeeArrayCalculatorAndManipulator(); 
    eGoogle.doSomethingWithArray(google.getEmployees()); 
    eMS.doSomethingWithArray(ms.getEmployees()); 
} 

} 
0

Он работал для меня: -

пакет EmployeePackage;

общественного класса Employee {

private int sales; 
private String name; 

public Employee(String employeeName, int employeeSales){ 
    this.name = employeeName; 
    this.sales = employeeSales; 


} 
public String getName(){ 
    return this.name; 
} 
public int getSales(){ 
    return this.sales; 
} 

}


пакет EmployeePackage;

импорт java.util.Scanner; класс EmployeeArray общественного {

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

    int numEmp; 

    System.out.println("Enter how may employees to be compared: "); 
    numEmp = input.nextInt(); 
    input.nextLine(); 
    Employee[] employees = new Employee[numEmp]; 

    for (int i = 0; i < numEmp; i++) { 
     System.out.print("Enter your name: "); 
     String employeeName = input.nextLine(); 
     System.out.println(); 
     System.out.print("Enter your annual sales: "); 
     int employeeSales = input.nextInt(); 
     input.nextLine(); 
     System.out.println(); 

employees[i] = new Employee(employeeName , employeeSales); //calling constructor 

    } 
    Employee maxSeller = employees[0]; 
    for (int i = 0; i < employees.length; i++) { 

     System.out.println("Employee Name: " + employees[i].getName()); 
     System.out.println("Total sales: $" + employees[i].getSales()); 
     System.out.println(); 

     if (maxSeller.getSales() < employees[i].getSales()) { 
      maxSeller = employees[i]; 
     } 
    } 
    System.out.println(); 
    System.out.println("Top Seller is: " + maxSeller.getName()); 
    System.out.println("Top Sales are: $" + maxSeller.getSales()); 


} 

}

 Смежные вопросы

  • Нет связанных вопросов^_^