当前位置: 首页 > 知识库问答 >
问题:

需要帮助从其他类调用方法

龚鸿羽
2023-03-14

我仍然是Java的新手,我正在努力使这个程序适合我的任务。

问题是:

杰夫在你家附近经营着一家当地的零售店。他已与您签订合同,让您创建一个交互式应用程序,以帮助他增加员工工资。创建一个名为 Details 的类,该类将包含员工 ID 号、名字、姓氏和薪水的获取和设置方法。包括一个名为getUpdateSalary()的方法,该方法将使员工的薪水增加10%。在您的主类中,包括一个名为 printDetails() 的静态方法,该方法将生成员工详细信息报告,还包括一个名为 salaryDeducions() 的静态方法,如果需要,该方法将显示员工扣除报告。

(我知道我没有做过< code>salaryDeductions方法)

它正确输出所有内容,直到incAmtnewSAl,这两个它只是说0,

我有两节课,职员工资和细节。以下是我的代码:

StaffSalaries.java

package staffsalaries;

import javax.swing.JOptionPane;


public class StaffSalaries {

    public static void printDetails(Details e ){

     JOptionPane.showMessageDialog(null, "Employee ID Number: " + e.getIdNum()
     + "\nEmployee First Name: " + e.getName()
     + "\nEmployee Surname: " + e.getSurname()
     + "\nOrigonal Salary: R" + e.getSalary()
     + "\nIncreass on Salary: R" + e.getincAmt()
     + "\nTotal Salary: R" + e.getnewSal());



    }

    public static void main(String[] args) {

        //Variables
        String name, surname;
        int idNum;
        double salary, incAmt = 0, newSal = 0;

        //Input
        idNum = Integer.parseInt(JOptionPane.showInputDialog(null, "Please enter employee ID number."));
        name = JOptionPane.showInputDialog(null, "Please enter your first name.");
        surname = JOptionPane.showInputDialog(null, "Please enter your surname");
        salary = Double.parseDouble(JOptionPane.showInputDialog(null, "Pleasse enter the salary to be increased."));

        Details e =new Details (idNum, name, surname, salary, incAmt, newSal);
        e.getUpdatedSalary();
        printDetails();

    }

}

详细信息.java

package staffsalaries;
public class Details {

    public void getUpdatedSalary () {

        incAmt = salary * 0.1;
        newSal = incAmt + salary;

    }

    //Attributes
    private String name, surname;
    private int idNum;
    private double salary, incAmt, newSal;

    //Constructor
    public Details (int idNum, String name, String surname, double salary, double incAmt, double newSal) {
       this.idNum = idNum;
       this.name = name;
       this.surname = surname;
       this.salary = salary;
       this.incAmt = incAmt;
       this.newSal = newSal;
    }

    //Gettrs
    public String getName() {
        return name;
    }

    public String getSurname() {
        return surname;
    }

    public int getIdNum() {
        return idNum;
    }

    public double getSalary() {
        return salary;
    }

    public double getincAmt() {
        return incAmt;
    }

    public Double getnewSal() {
        return newSal;
    }

    //Setters
    public void setName(String name) {
        this.name = name;
    }

    public void setSurname(String surname) {
        this.surname = surname;
    }

    public void setIdNum(int idNum) {
        this.idNum = idNum;
    }

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

    public void setincAmt(double incAmt) {
        this.incAmt = incAmt;
    }

    public void setnewSal(double newSal) {
        this.newSal = newSal;
    }
}

共有3个答案

乜坚成
2023-03-14

incAmt到底什么时候应该设置为0以外的任何值?我唯一能看到的地方是getUpdatedSalary(),它似乎从未被调用过。

使用getUpdatedSalary()既返回值又改变对象的变量,对我来说似乎不是最好的主意。或许试试这个:

private double updatedSalary;
public void setUpdatedSalary () {

    incAmt = salary * 0.1;
    newSal = incAmt + salary;
    updatedSalary = incAmt + newSal;
}

public double setUpdatedSalary () {

    return updatedSalary;
}

并在打印中详细信息:

public static void printDetails(int idNum, String name, String surname, double salary, double incAmt, double newSal){

    Details e = new Details (idNum, name, surname, salary, incAmt, newSal);
    e.setIdNum(idNum);
    e.setName(name);
    e.setSurname(surname);
    e.setSalary(salary);
    e.setincAmt(incAmt);
    e.setnewSal(newSal);
    e.setUpdatedSalary();

 JOptionPane.showMessageDialog(null, "Employee ID Number: " + e.getIdNum()
         + "\nEmployee First Name: " + e.getName()
         + "\nEmployee Surname: " + e.getSurname()
         + "\nOrigonal Salary: R" + e.getSalary()
         + "\nIncreass on Salary: R" + e.getincAmt()
         + "\nTotal Salary: R" + e.getnewSal());
}
蒲魁
2023-03-14

将您的 getUpdateSalary 方法更改为此

public void getUpdatedSalary(double salary, double incAmt, double newSal) {
  incAmt = salary * 0.1;
  newSal = incAmt + salary; 
}

并调用这个方法< code>getUpdatedSalary(salary,incAmt,newSal);之前

printDetails(idNum, name, surname, salary, incAmt, newSal)
宦兴朝
2023-03-14

请记住这些事情。方法仅在调用时执行。你还没有调用方法getUpdateSalary()。试着弄清楚你会在哪里称呼它。

此外,代码将按照你定义的当前方法运行,但是看看返回类型,你真的需要返回那个值吗?

public static void printDetails(Details e ){
     JOptionPane.showMessageDialog(null, "Employee ID Number: " + e.getIdNum()
     + "\nEmployee First Name: " + e.getName()
     + "\nEmployee Surname: " + e.getSurname()
     + "\nOrigonal Salary: R" + e.getSalary()
     + "\nIncreass on Salary: R" + e.getincAmt()
     + "\nTotal Salary: R" + e.getnewSal());
}

     salary = Double.parseDouble(JOptionPane.showInputDialog(null, "Pleasse enter the saalary to be increased."));
Details e =new Details (idNum, name, surname, salary, incAmt, newSal);
e.getUpdatedSalary();

这可能很难解释,但你应该弄清楚为什么你需要这样做。

 类似资料:
  • 我正试图从第I列A列中查找ID。这是我使用的代码:

  • 问题内容: 我正在做作业,遇到了一些错误。在一个类中,我有此方法: 现在,我收到错误消息“无法从静态上下文中引用非静态方法…”,因此我将getPoints()设置为静态方法,并将变量也设置为静态,并且它可以正常工作。但是在另一种打印对象的方法中,它不起作用(我相信是由于static关键字)。 所以我的问题是,有没有一种方法可以在不创建第二个Class实例的情况下调用方法?这是我所拥有的一般构想代码

  • 现在我得到错误“non-static method conly be referenced from a static context...”,所以我将getPoints()设置为静态方法,同时将变量设置为静态,这样就可以工作了。但是在另一个打印对象的方法中,它就不起作用了(我相信这是因为static关键字的缘故)。 那么我的问题是,在所有这些之后,有没有一种方法可以调用一个方法,而不创建第二个类

  • 首先,我是C、C++、C#、Android和Swift的开发人员,但我绝对没有JavaScript、PHP或Web开发经验。 即只接受整数值的输入。 这是刀片代码:

  • 问题内容: 我想从一个名为Sorels的表更新一个名为的表。它们之间的链接是的等于Sorels表的。这是我对Merge语句的第一次尝试,并且我正在尝试学习语法。 运行此命令时,出现以下错误: 错误10/22/2009 1:38:51 PM 0:00:00.000 SQL Server数据库错误:关键字’ON’附近的语法不正确。46 0 添加的信息* 在建议了第一个修复程序之后,代码如下: 现在我得

  • 在中创建android模块需要一点帮助