Я пробую свои силы в разработке java и сталкиваюсь с проблемой.
Я создал 2 класса, Сотрудник и Контракт.Я пытаюсь сделать так, чтобы код в основном методе выполнялся для конкретных сотрудников.У каждого сотрудника есть свой идентификатор и имя.Код, который я сделал, ниже.
Employee.java
package com.company;
import java.util.ArrayList;
public class Employee {
// Employee Data
public int employeeId;
public String employeeName;
// Array of all contracts assigned to an employee
private static ArrayList<Contract> assignedContracts = new ArrayList<>();
// Size of assigned contracts array
private int contractAllocation;
public Employee(int employeeId, String employeeName, String ContractName1, String ContractName2, String ContractName3, String ContractName4, int ContractId1, int ContractId2, int ContractId3, int ContractId4, int ContractCost1, int ContractCost2, int ContractCost3, int ContractCost4, int MaxAssignedEmployees1, int MaxAssignedEmployees2, int MaxAssignedEmployees3, int MaxAssignedEmployees4) {
this.employeeId = employeeId;
this.employeeName = employeeName;
Main.createContracts(ContractName1, ContractName2, ContractName3, ContractName4, ContractId1, ContractId2, ContractId3, ContractId4, ContractCost1, ContractCost2, ContractCost3, ContractCost4, MaxAssignedEmployees1, MaxAssignedEmployees2, MaxAssignedEmployees3, MaxAssignedEmployees4);
contractAllocation = assignedContracts.size();
}
// Print all assigned contracts to console (as table)
public void provideAssignedContracts() {
System.out.println("-----------------------------------------------------------------------------");
System.out.printf("%10s %20s %20s %20s", "CONTRACT ID", "CONTRACT NAME", "CONTRACT COST", "MAX EMPLOYEES");
System.out.println();
System.out.println("-----------------------------------------------------------------------------");
for(int i = 0; i < assignedContracts.size(); i++) {
System.out.format("%10s %20s %20s %22s",
assignedContracts.get(i).getContractId(), assignedContracts.get(i).getContractName(), "£" + assignedContracts.get(i).getContractCost(), assignedContracts.get(i).getmaxAssignedEmployees());
System.out.println();
}
System.out.println("-----------------------------------------------------------------------------");
}
// Number of assigned contracts
public int provideNumOfAssignedContracts() {
// Count for number of contracts
int count = 0 ;
// Increment count for every contract
for(int i = 0; i < assignedContracts.size(); i++) {
count++;
}
// Return int for number of assigned contracts
return count;
}
// Total cost of all assigned contracts
public int provideTotalCostOfAssignedContracts() {
// variable to store cost in
int sum = 0;
// add each cost iteration to sum
for(int i = 0; i < assignedContracts.size(); i++) {
sum += assignedContracts.get(i).getContractCost();
}
// Return int for total cost
return sum;
}
// Add a contract to the employee
public static void addContract(Contract contract) {
assignedContracts.add(contract);
}
}
Contract.java
package com.company;
public class Contract {
// Contract Data
private int contractId;
private String contractName;
private int contractCost;
private int maxAssignedEmployees;
public Contract(String contractName, int contractId, int contractCost, int maxAssignedEmployees) {
this.contractId = contractId;
this.contractName = contractName;
this.contractCost = contractCost;
this.maxAssignedEmployees = maxAssignedEmployees;
}
// Return contract id
public int getContractId() {
return contractId;
}
// Return contract name
public String getContractName() {
return contractName;
}
// Return contract cost
public int getContractCost() {
return contractCost;
}
// Return number of max employees for a contract
public int getmaxAssignedEmployees() {
return maxAssignedEmployees;
}
}
Main.java
package com.company;
public class Main {
// Create employee 1
private static Employee Employee1 = new Employee(1, "Bradley", "Contract 1", "Contract 2", "Contract 3", "Contract 4", 1, 2,3,4,300,1200,500,900, 5,10,5,2);
// Create employee 2
private static Employee Employee2 = new Employee(2, "Patrick", "Contract 1", "Contract 2", "Contract 3", "Contract 4", 1, 2,3,4,300,1200,500,900, 5,10,5,2);
// Create contracts
public static void createContracts(String ContractName1, String ContractName2, String ContractName3, String ContractName4, int ContractId1, int ContractId2, int ContractId3, int ContractId4, int ContractCost1, int ContractCost2, int ContractCost3, int ContractCost4, int maxAssignedEmployees1, int maxAssignedEmployees2, int maxAssignedEmployees3, int maxAssignedEmployees4) {
Employee.addContract(new Contract(ContractName1, ContractId1, ContractCost1, maxAssignedEmployees1));
Employee.addContract(new Contract(ContractName2, ContractId2, ContractCost2, maxAssignedEmployees2));
Employee.addContract(new Contract(ContractName3, ContractId3, ContractCost3, maxAssignedEmployees3));
Employee.addContract(new Contract(ContractName4, ContractId4, ContractCost4, maxAssignedEmployees4));
}
// Show assigned contracts for employee
public static void displayAssignedContracts() {
Employee1.provideAssignedContracts();
}
public static void main(String[] args) {
System.out.println("Employee ID: " + Employee1.employeeId);
System.out.println("Employee Name: " + Employee1.employeeName);
System.out.println("Assigned Contracts: " + Employee1.provideNumOfAssignedContracts());
System.out.println("Total cost of all contracts assigned: £" + Employee1.provideTotalCostOfAssignedContracts() + "\n");
displayAssignedContracts();
}
}
Приведенное выше выводит следующее:
Предполагаемый вывод для консоли - отображать только назначенные контрактыдля сотрудника 1 я чувствую, что в одном из моих занятий мне нужно будет указать идентификатор сотрудника в качестве параметра, но каждый раз, когда я пытаюсь продвинуться в этом, я просто вызываю все больше и больше ошибок, я пробовал несколько решений, так чтоЯ бы прибег к публикации вопроса.
Любая помощь будет чрезвычайно признательна.
Заранее спасибо,
B
Обновление:
Main.Java
package com.company;
public class Main {
// Create employee 1
public static Employee Employee1 = new Employee(1, "Bradley", "Contract 1", "Contract 2", "Contract 3", "Contract 4", 1, 2,3,4,300,1200,500,900, 5,10,5,2);
// Create employee 2
public Employee Employee2 = new Employee(2, "Patrick", "Contract 1", "Contract 2", "Contract 3", "Contract 4", 1, 2,3,4,300,1200,500,900, 5,10,5,2);
// Create contracts
public static void createContracts(String ContractName1, String ContractName2, String ContractName3, String ContractName4, int ContractId1, int ContractId2, int ContractId3, int ContractId4, int ContractCost1, int ContractCost2, int ContractCost3, int ContractCost4, int maxAssignedEmployees1, int maxAssignedEmployees2, int maxAssignedEmployees3, int maxAssignedEmployees4) {
Employee1.addContract(new Contract(ContractName1, ContractId1, ContractCost1, maxAssignedEmployees1));
Employee1.addContract(new Contract(ContractName2, ContractId2, ContractCost2, maxAssignedEmployees2));
Employee1.addContract(new Contract(ContractName3, ContractId3, ContractCost3, maxAssignedEmployees3));
Employee1.addContract(new Contract(ContractName4, ContractId4, ContractCost4, maxAssignedEmployees4));
}
// Show assigned contracts for employee
public static void displayAssignedContracts() {
Employee1.provideAssignedContracts();
}
public static void main(String[] args) {
System.out.println("Employee ID: " + Employee1.employeeId);
System.out.println("Employee Name: " + Employee1.employeeName);
System.out.println("Assigned Contracts: " + Employee1.provideNumOfAssignedContracts());
System.out.println("Total cost of all contracts assigned: £" + Employee1.provideTotalCostOfAssignedContracts() + "\n");
displayAssignedContracts();
}
}
Employee.java
package com.company;
import java.util.ArrayList;
import static com.company.Main.*;
public class Employee {
// Employee Data
public int employeeId;
public String employeeName;
// Array of all contracts assigned to an employee
private final ArrayList<Contract> assignedContracts = new ArrayList<>();
// Size of assigned contracts array
private int contractAllocation;
public Employee(int employeeId, String employeeName, String ContractName1, String ContractName2, String ContractName3, String ContractName4, int ContractId1, int ContractId2, int ContractId3, int ContractId4, int ContractCost1, int ContractCost2, int ContractCost3, int ContractCost4, int MaxAssignedEmployees1, int MaxAssignedEmployees2, int MaxAssignedEmployees3, int MaxAssignedEmployees4) {
this.employeeId = employeeId;
this.employeeName = employeeName;
Main.createContracts(ContractName1, ContractName2, ContractName3, ContractName4, ContractId1, ContractId2, ContractId3, ContractId4, ContractCost1, ContractCost2, ContractCost3, ContractCost4, MaxAssignedEmployees1, MaxAssignedEmployees2, MaxAssignedEmployees3, MaxAssignedEmployees4);
contractAllocation = assignedContracts.size();
}
// Print all assigned contracts to console (as table)
public void provideAssignedContracts() {
System.out.println("-----------------------------------------------------------------------------");
System.out.printf("%10s %20s %20s %20s", "CONTRACT ID", "CONTRACT NAME", "CONTRACT COST", "MAX EMPLOYEES");
System.out.println();
System.out.println("-----------------------------------------------------------------------------");
for(int i = 0; i < assignedContracts.size(); i++) {
System.out.format("%10s %20s %20s %22s",
assignedContracts.get(i).getContractId(), assignedContracts.get(i).getContractName(), "£" + assignedContracts.get(i).getContractCost(), assignedContracts.get(i).getmaxAssignedEmployees());
System.out.println();
}
System.out.println("-----------------------------------------------------------------------------");
}
// Number of assigned contracts
public int provideNumOfAssignedContracts() {
// Count for number of contracts
int count = 0 ;
// Increment count for every contract
for(int i = 0; i < assignedContracts.size(); i++) {
count++;
}
// Return int for number of assigned contracts
return count;
}
// Total cost of all assigned contracts
public int provideTotalCostOfAssignedContracts() {
// variable to store cost in
int sum = 0;
// add each cost iteration to sum
for(int i = 0; i < assignedContracts.size(); i++) {
sum += assignedContracts.get(i).getContractCost();
}
// Return int for total cost
return sum;
}
// Add a contract to the employee
public void addContract(final Contract contract) {
assignedContracts.add(contract);
}
}
Без изменений Contract.java
Выход: