我被要求用TestStaff计算一个接受名字的Java程序, 员工身份和每天工作作为用户的输入,并显示员工的姓名,员工ID和工资。但是在输出结束时,我得到null null 0.0。我是这个对象和课程部分的初学者,我真的迷路了。有人可以帮忙吗?这是我的代码:
这是给定的代码:
!
以下是TestStaff的代码:
class Staff {
private String name, staffID;
private double salary;
private int workingDay;
public void setStaffInfo(String nm, String id, int wDay){
name=nm;
staffID=id;
workingDay=wDay;
}
public void calculateSalary(){
salary = workingDay * 35.0;
}
public double getSalary(){
return salary;
}
public String getName(){
return name;
}
public String getStaffID(){
return staffID;
}
}
import java.util.Scanner;
答案 0 :(得分:2)
您需要使用Staff
类set
方法初始化其成员。
即:staff1.setStaffInfo(nm, id, wDay);
您所做的只是创建3个新变量并为其分配值,但您的Staff
个对象'成员没有设定。
您也可以在calculateSalary()
之前致电getSalary()
,因为前者会初始化salary
变量。
答案 1 :(得分:2)
您缺少调用方法staff1.setStaffInfo(nm, id, wDay);
我建议使用类Staff的所有实例变量的参数化构造函数,使用该构造函数为Staff创建实例。这样你就不会得到空值。 建议: 在Staff类中创建构造函数:
Staff(){}
Staff(String name, String staffID, double salary , int workingDay){
this.name = name;
this.staffID=staffID;
this.salary=salary;
this.workingDay = workingDay;
}
在TestStaff类中,您可以添加以下行:
Staff staff2 = new Staff(nm,id, 2400, wDay);
System.out.println(staff2.getName() + "\t" + staff2.getStaffID() + "\t\t" + staff2.getSalary());
答案 2 :(得分:1)
但是在输出结束时,我得到null,null,0.0。
您没有在代码中的任何位置向setStaffInfo(String nm, String id, int wDay)
传递任何参数,因此它显示为null,null,0.0
<强>解决方案强>
将以下变量传递给类setStaffInfo(String nm, String id, int wDay)
Staff
方法
String nm=console.nextLine();
String id=console.nextLine();
int wDay=console.nextInt();
喜欢这样:
staff1. setStaffInfo(nm,id,wDay)
和建议
在getSalary()方法中运行calculateSalary()
,如下所示:
public double getSalary(){
calculateSalary(); //this will autimatically calculate salary
return salary;
}
然后,您只需在主要方法中调用getSalary()
,它就会自动调用calculateSalary()
,或者您也可以将calculateSalary()
中的那一行放入getSalary()
还
答案 3 :(得分:1)
在main方法中,您创建了Staff对象并将所有输入存储在某个变量中,但未在object中设置输入。这就是为什么当你打印staff1.getSalary()时它会返回默认值double,即0.0。首先设置值staff1.setInfo(...)然后打印值。
答案 4 :(得分:0)
您可以从班级员工创建一个新对象,但您必须将数据成员分配给班级,并且可以通过两种不同的方式完成:
1-您的方法staff1.setStaffInfo(nm,id,wDay);
staff1.setStaffInfo(nm, id, wDay);
2-构造函数
Staff staff1= new Staff(id, nm, wDay);
在Staff类中添加下面的构造函数,这个构造函数将使您能够创建一个指定id,nm和wDay的新对象
Staff (String staffID ,String name , int workingDay) {
this.staffID = staffID;
this.name = name ;
this.workingDay = workingDay ;
}