任务说明
我有这样的问题陈述:创建一个类员工与以下私有成员变量。
int employeeId
String employeeName
double salary
double netSalary
在 Employee 类中包括适当的 getter 和 setters 方法。在 Employee 类中编写以下方法:public void calculateNetSalary (int pfpercentage)-此方法应将 PF 百分比作为参数。从薪金中减去 PF 金额并设置 netSalary。
创建一个 Main 类,它具有调用该方法以获取输入并打印详细信息的 main 方法,如示例所示。
也写一个方法:
公共静态 Employee getEmployeeDetails()-获取员工详细信息-id,姓名和薪水,并返回员工对象。
public static int getPFPercentage ()-获取 PF 百分比并返回相同的
在 main 方法中调用上述两个方法,然后调用 Employee 类中的 calculateNetSalary 方法,并打印如下所示的输出。
示例输入1:
输入 ID:101 输入名称:Vivek 输入薪水:20000 输入 PF 百分比:7
示例输出1:
Id:101
名称:Vivek
工资:20000.0
工资净额:18600.0
我做了什么
我在 Employee.java 中编写了 getter & amp;setters 方法和 calculateNetSalary()方法。我被困在 Main.java 中应该写什么以及如何写
Employee.java
public cl 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 cl 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,因为我不知道什么和如何写。
这应该是你的代码:
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 () 方法中定义其他方法。您可以在其中调用其他方法(根据需要)。
您的代码中有几个问题。首先看Employee.java,有几个问题:
设置netSalary
的方法被声明为public void netSalary(double netSalary)
,它应该是public void SetNetSalary(double netSalary)
public void calculateNetSalary(int pfpercentage)
中的计算看起来不正确。如果您要传递一个双精度(即 2 表示 2 %),那么您需要将其除以 100 以将数字转换为百分比。
如果要使用变量,则需要声明变量(nameltypfamount
需要声明为double
,然后才能为其分配某些内容)。
您可能需要一个public String toString()
方法来打印您的员工对象。
所以你最终会得到这样的东西:
public cl 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也有几个问题:
你不能在方法中声明方法。
这不是实现java.util.Scanner
...System.out.println("Enter Id:"+setEmployeeId(sc.nextInt()))
的正确方法。本质上,扫描仪部分需要与System.out
分开(请记住,System.out
所做的唯一事情是打印出文本,它不等待来自扫描仪的输入)。
如果我正确理解你的问题,你需要将你的一些逻辑移出你的主要方法,并进入getEmployeeDetails()
和getPFPercentage()
所以你最终会得到这样的东西:
import java.util.Scanner;
public cl 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());
}
}
你已经有了一个好的开始。但是,有几个语法错误,比如忘记用分号结束一些语句。另外,据我所知,Java 不支持嵌套方法,所以你不应该在你的main
方法中有getEmployeeDetails()
和getPFPercentage()
方法。我已经重新安排了代码来纠正这一点。
我所做的其他更改是对您的Employee
类,特别是calculateNetSalary
方法。pfPercentage
在乘以salary
之前除以 100。此外,实例变量netSalary
在使用适当的 setter 方法计算后被设置为局部变量netSalary
。自netSalary
除了根据规范完成Main
类之外,我没有对您的代码进行任何其他更改。
import java.util.Scanner;
public cl 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 cl 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);
}
}
编写一个类,Manager,它扩展了 MonthlyEmployee,并具有另一个实例变量,奖金和一个实例方法 setBonus。重写 pay 方法并相应地更新 TestEmployee。3.编写一个类 TestShapes,它创建每个形状类的实例并打印出来。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(12条)