Java程序输出null null 0.0问题求助:TestStaff类实现遇困
解决TestStaff程序输出null null 0.0的问题
刚学类和对象的时候碰到这种默认值的问题真的超容易懵!我帮你捋捋问题出在哪,再给你改好代码~
问题根源分析
你输出null null 0.0,本质是因为类的成员变量没被正确赋值,Java里的默认值规则导致的:
- 引用类型(比如
String)的默认值是null - 基本数据类型里,
double默认是0.0,int默认是0
结合你给出的代码片段,大概率是这几个问题:
setStaffInfo方法里没把传入的参数赋值给类的成员变量- 没有实现薪资计算的逻辑,
salary一直是默认的0.0 - 可能没写获取私有属性的getter方法,导致输出时拿不到正确的值
修正后的完整代码
1. Staff类(完善属性赋值、薪资计算和getter方法)
class Staff { // 私有成员变量,封装起来更安全 private String name; private String staffID; private double salary; private int dailyWorkingHours; // 变量名更清晰,代表每日工作时长 // 设置员工基础信息的方法 public void setStaffInfo(String nm, String id, int hours) { // 用this区分成员变量和方法参数,避免变量名冲突 this.name = nm; this.staffID = id; this.dailyWorkingHours = hours; } // 计算薪资的方法,这里假设时薪是50.0,你可以根据需求调整,甚至改成用户输入时薪 public void calculateSalary() { double hourlyRate = 50.0; this.salary = dailyWorkingHours * hourlyRate; } // 获取姓名的getter方法(私有属性只能通过这种方式外部访问) public String getName() { return name; } // 获取员工ID的getter方法 public String getStaffID() { return staffID; } // 获取薪资的getter方法 public double getSalary() { return salary; } }
2. TestStaff类(接收用户输入、调用方法并输出)
import java.util.Scanner; public class TestStaff { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 创建Staff类的对象,这是类和对象的核心:用类创建实例 Staff staff = new Staff(); // 接收用户输入的信息 System.out.print("请输入员工姓名:"); String name = scanner.nextLine(); System.out.print("请输入员工ID:"); String staffID = scanner.nextLine(); System.out.print("请输入每日工作时长:"); int dailyHours = scanner.nextInt(); // 调用set方法给对象的属性赋值 staff.setStaffInfo(name, staffID, dailyHours); // 调用计算薪资的方法,给salary赋值 staff.calculateSalary(); // 通过getter方法获取属性值并输出 System.out.println(staff.getName() + " " + staff.getStaffID() + " " + staff.getSalary()); scanner.close(); } }
关键知识点回顾
- 成员变量赋值:一定要通过set方法或者构造方法给私有成员变量赋值,不然会保留默认值
- this关键字:用来区分类的成员变量和方法里的局部变量,避免变量名覆盖
- 封装思想:用private修饰成员变量,通过getter/setter方法访问和修改,这是面向对象的基础
- 方法调用:创建对象后,必须调用对应的方法(比如
setStaffInfo、calculateSalary)才能执行赋值和计算逻辑
内容的提问来源于stack exchange,提问作者Hann
相关产品推荐
相关产品推荐

