Расчет зарплаты сотрудника - PullRequest
0 голосов
/ 22 сентября 2019

Описание задачи

У меня есть такая проблема: Создайте класс Employee со следующими закрытыми переменными-членами.

int employeeId
String employeeName
double salary
double netSalary

Включите соответствующие методы getters и setters в класс Employee.Запишите следующий метод в классе Employee: public void calculateNetSalary (int pfpercentage) - этот метод должен принимать процент PF в качестве аргумента.Вычтите сумму ПФ из зарплаты и установите netSalary.

Создайте класс Main, у которого есть метод main, который вызывает метод для получения ввода и печатает детали, как показано в примере.

Также напишите метод:

public static Employee getEmployeeDetails () - который получает сведения о сотруднике - идентификатор, имя и зарплату и возвращает объект сотрудника.

public staticint getPFPercentage () - который получает процент PF и возвращает то же самое

В основном методе вызовите два вышеупомянутых метода, а затем вызовите метод calcNetSalary в классе Employee и распечатайте вывод, как показано ниже.

Пример ввода 1:

Ввод идентификатора: 101 Ввод имени: Вивек Ввод оклада: 20000 Ввод процентного сбора в процентах: 7

Пример вывода 1:

ИД: 101

Имя: Вивек

Зарплата: 20000,0

Чистая зарплата: 18600,0


Что я сделал

Я написал геттер& устанавливает методы и методNetNetSalary () в Employee.java.Я застрял в том, что и как я должен написать в Main.java

Employee.java

public class Employee{

    private int employeeId;
    private String employeeName;
    private double salary;
    private double netSalary;

    //setters
    public void setEmployeeId(int employeeId){
        this.employeeId=employeeId;
    }
    public void setEmployeeName(String employeeName){
        this.employeeName=employeeName;
    }
    public void setSalary(double salary){
        this.salary=salary;
    }
    public void netSalary(double netSalary){
        this.netSalary=netSalary;
    }

    //getters
    public int getEmployeeId(){
        return employeeId;
    }
    public String getEmployeeName(){
        return employeeName;
    }
    public double getSalary(){
        return salary;
    }
    public double getNetSalary(){
        return netSalary;
    }

    public void calculateNetSalary(int pfpercentage){

        pfamount=salary*pfpercentage;
        netSalary=salary-pfamount;
    }
}

Main.java

import java.util.Scanner;
public class Main{
    public staic void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Employee emp = new Employee();

        System.out.println("Enter Id:"+setEmployeeId(sc.nextInt()))
        System.out.println("Enter Name:"+setEmployeeName(sc.next()));
        System.out.println("Enter salary:"+setSalary(sc.nextDouble()));

        System.out.println("Enter PF percentage:");
        double pfpercentage = sc.nextDouble();

        public static Employee getEmployeeDetails(){


        }

        public static int getPFPercentage(){

        }

    }
}

Я не могу завершитьMain.java, как я не уверен, что и как писать.

Ответы [ 3 ]

1 голос
/ 22 сентября 2019

Это должен быть ваш код:

 public void main(String[] args){
        Scanner sc = new Scanner(System.in);
        Employee emp = new Employee();

        emp.setEmployeeId(sc.nextInt());
        emp.setEmployeeName(sc.next()) ;
        emp.setSalary(sc.nextDouble());

        System.out.println("Enter PF percentage:");
        double pfpercentage = sc.nextDouble();
        emp.calculateNetSalary(pfpercentage);
        System.out.println("Salay is " + emp.getNetSalary());
    }

Также обратите внимание, что вы не определили тип pfamount:

 public void calculateNetSalary(double pfpercentage){

        double pfamount=salary*pfpercentage;
        netSalary=salary-pfamount;
    }

Вы не можете определить другие методы внутриметод main ().Вы можете вызывать другие методы внутри него (сколько хотите).

0 голосов
/ 22 сентября 2019

Вы хорошо начали.Однако есть несколько синтаксических ошибок, таких как забывание заканчивать некоторые операторы точкой с запятой.Кроме того, насколько я знаю, Java не поддерживает вложенные методы, поэтому у вас не должно быть методов getEmployeeDetails() и getPFPercentage() внутри вашего main метода.Я изменил код, чтобы исправить это.

Другие изменения, которые я сделал, были в вашем классе Employee, особенно в методе calculateNetSalary.pfPercentage делится на 100 до умножения на salary.Кроме того, переменная экземпляра netSalary устанавливается как локальная переменная netSalary после того, как она была вычислена с использованием соответствующего метода установки.Метод netSalary также был переименован в setNetSalary, поскольку он более наглядно описывает то, что делает метод.

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

Main.java

import java.util.Scanner;

public class Main {

    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args){
        Employee newEmployee = getEmployeeDetails();
        double pfPercentage = getPFPercentage();

        System.out.println();
        System.out.println("Confirm employee details: ");
        System.out.println("Id : " + newEmployee.getEmployeeId());
        System.out.println("Name : " + newEmployee.getEmployeeName());
        System.out.println("Salary : " + newEmployee.getSalary());

        newEmployee.calculateNetSalary(pfPercentage);
        System.out.println("Net Salary : " + newEmployee.getNetSalary());
    }

    /**
     * Gets the details of a new employee from user input
     * @return the new {@link Employee}
     */
    public static Employee getEmployeeDetails() {
        Employee employee = new Employee();
        System.out.println("Enter Id: ");
        employee.setEmployeeId(scanner.nextInt());
        System.out.println("Enter Name: ");
        employee.setEmployeeName(scanner.next());
        System.out.println("Enter salary: ");
        employee.setSalary(scanner.nextDouble());
        return employee;
    }

    /**
     * Gets the PF percentage from user input
     * @return the PF percentage
     */
    public static double getPFPercentage(){
        System.out.println("Enter PF percentage:");
        double pfPercentage = scanner.nextDouble();
        return pfPercentage;
    }

}

Employee.java

public class Employee{

    private int employeeId;
    private String employeeName;
    private double salary;
    private double netSalary;

    // Setters
    public void setEmployeeId(int employeeId){
        this.employeeId = employeeId;
    }

    public void setEmployeeName(String employeeName){
        this.employeeName = employeeName;
    }

    public void setSalary(double salary){
        this.salary = salary;
    }

    private void setNetSalary(double netSalary){
        this.netSalary = netSalary;
    }

    // Getters
    public int getEmployeeId(){
        return employeeId;
    }

    public String getEmployeeName(){
        return employeeName;
    }

    public double getSalary(){
        return salary;
    }

    public double getNetSalary(){
        return netSalary;
    }

    public void calculateNetSalary (double pfPercentage){
        double pfAmount = salary * (pfPercentage / 100);
        double netSalary = salary - pfAmount;
        this.setNetSalary(netSalary);
    }
}
0 голосов
/ 22 сентября 2019

У вас есть пара проблем в вашем коде.Во-первых, глядя на Employee.java , есть пара проблем:

  1. Ваш метод установки netSalary объявлен как public void netSalary(double netSalary), где он должен быть public void SetNetSalary(double netSalary)
  2. Расчет в public void calculateNetSalary(int pfpercentage) выглядит неверно.Если вы собираетесь передать двойное число (т. Е. 2 ​​для представления 2%), то вам нужно разделить это на 100, чтобы преобразовать число в процент.
  3. Вам необходимо объявить переменные, если вы собираетесь их использовать (nameltypfamount должен быть объявлен как double, прежде чем вы сможете что-то ему присвоить).
  4. Вам, вероятно, понадобится метод public String toString() для распечатки объекта сотрудника.

Таким образом, вы получите что-то вроде этого:

public class Employee{

  private int employeeId;
  private String employeeName;
  private double salary;
  private double netSalary;

//setters
  public void setEmployeeId(int employeeId){
      this.employeeId=employeeId;
  }

  public void setEmployeeName(String employeeName){
      this.employeeName=employeeName;
  }

  public void setSalary(double salary){
      this.salary=salary;
  }

  public void setNetSalary(double netSalary){
      this.netSalary=netSalary;
  }

  //getters
  public int getEmployeeId(){
      return employeeId;
  }

  public String getEmployeeName(){
      return employeeName;
  }

  public double getSalary(){
      return salary;
  }

  public double getNetSalary(){
      return netSalary;
  }

  public void calculateNetSalary(double pfpercentage) {
      double pfamount = salary * (pfpercentage / 100);
      netSalary = salary - pfamount;
  }

  @Override
  public String toString() {
      String output = new StringBuffer()
              .append("Id: ").append(employeeId)
              .append(System.lineSeparator()).append("Name: ").append(employeeName)
              .append(System.lineSeparator()).append("Salary: ").append(salary)
              .append(System.lineSeparator()).append("Net Salary: ").append(netSalary).toString();
      return output;
  }
}

У вас также есть пара проблем с вашим Main.java :

  1. Вы не можете объявлять методы внутри методов.
  2. Это неправильный способ реализации java.util.Scanner ... System.out.println("Enter Id:"+setEmployeeId(sc.nextInt())).По сути, часть сканера должна быть отделена от System.out (помните, что System.out делает только вывод на печать текста, он не ждет ввода от сканера).
  3. Если я правильно понимаю ваш вопрос,вам нужно переместить часть своей логики из основного метода в getEmployeeDetails() и getPFPercentage()

Таким образом, вы получите что-то вроде этого:

import java.util.Scanner;

public class EmployeeSalaryCalculation {

private Scanner scanner;

  public EmployeeSalaryCalculation() {
    scanner = new Scanner(System.in);
  }

  public Employee getEmployeeDetails() {
      Employee employee = new Employee();
      System.out.println("Enter Id:");
      employee.setEmployeeId(scanner.nextInt());
      System.out.println("Enter Name:");
      employee.setEmployeeName(scanner.next());
      System.out.println("Enter salary:");
      employee.setSalary(scanner.nextDouble());
      return employee;
  }

  public double getPFPercentage(){
      System.out.println("Enter PF percentage:");
      return scanner.nextDouble();
  }

  public static void main(String[] args) {
      EmployeeSalaryCalculation employeeSalaryCalculation = new EmployeeSalaryCalculation();
      Employee employee = employeeSalaryCalculation.getEmployeeDetails();
      employee.calculateNetSalary(employeeSalaryCalculation.getPFPercentage());
      System.out.println(employee.toString());
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...