作业题代码报错

作业题代码报错

部门类

package com.imooc.model;

public class Department {
	private String departmentName;
	private String departmentNo;//
	
	public Department()
	{
		
	}
	
	public Department(String departmentName,String departmentNo)
	{
		
	}

	public String getDepartmentName() {
		return departmentName;
	}

	public void setDepartmentName(String departmentName) {
		this.departmentName = departmentName;
	}

	public String getDepartmentNo() {
		return departmentNo;
	}

	public void setDepartmentNo(String departmentNo) {
		this.departmentNo = departmentNo;
	}

	
}

职务类

package com.imooc.model;

public class Post {
	
	private String name;
	private String postNo;//工号
	
	public Post()
	{
		
	}
	
	public Post(String name,String postNo)
	{
		
	}

	public String getName() {
		return name;
	}

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

	public String getPostNo() {
		return postNo;
	}

	public void setPostNo(String postNo) {
		this.postNo = postNo;
	}
	

}

员工类

package com.imooc.model;

public class Staff {
	private int name;
	private int age;
	private String sex;
	private String staffNo;
	private Post myPost;
	private Department myDepartment;

	public Staff() {

	}

	public Staff(String name,int age,String sex,String staffNo,String postName)
	{
		this.setAge(age);
		this.setSex(sex);
		this.setStaffNo(staffNo);
	}

	public String getStaffNo() {
		return staffNo;
	}

	public void setStaffNo(String staffNo) {
		this.staffNo = staffNo;
	}

	public int getName() {
		return name;
	}

	public void setName(int name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		if (age >= 18 && age <= 65)
			this.age = age;
		else
			this.age = 18;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		if (sex == "男" || sex == "女")
			this.sex = sex;
		else
			this.sex = "男";
	}

	public Post getMyPost() {
		return myPost;
	}

	public void setMyPost(Post myPost) {
		this.myPost = myPost;
	}

	public Department getMyDepartment() {
		return myDepartment;
	}

	public void setMyDepartment(Department myDepartment) {
		this.myDepartment = myDepartment;
	}

	public String introduction() {
		String str = "姓名" + this.getName() + "\n工号" + this.myPost.getPostNo()
				+ "\n性别" + this.getSex() + "\n年龄" + this.getAge() + "\n职务"
				+ this.myPost.getName();
		return str;
	}

}

测试类

package com.imooc.test;
import com.imooc.model.*;
public class HomeworkTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Staff one=new Staff("张铭",29,"男","S001","人事部经理");
		System.out.println(one.introduction());
	}

}

报错“

Exception in thread "main" java.lang.NullPointerException

at com.imooc.model.Staff.introduction(Staff.java:81)

at com.imooc.test.HomeworkTest.main(HomeworkTest.java:10)


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
Tender10 2018-05-09 10:16:00

1、Staff里的name参数是String类型的,你定义成了int类型,应该将对应的类型全部修改一下。

2、Department、Post 类里的有参构造方法没有调用set方法给属性进行赋值,应该完善有参构造方法。

3、Staff里的有参构造方法,可以

public Staff(String name,int age,String sex,String staffNo,Post mypost,Department myDepartment){},然后完成对应set赋值。

4、Test类中定义一个Post对象和Department对象,然后定义一个Staff对象,调用构造方法传入对应的值即可。


  • 提问者 Felixxx #1
    请问test类定义两个对象应该怎么做
    2018-05-09 10:35:03
  • Tender10 回复 提问者 Felixxx #2
    1、Department dep = new Department("","");传入对应的参数。2、Post po = new Post("","");传入对应的参数。所以需要你先完善对应类中的有参构造方法。
    2018-05-09 10:44:13
好帮手慕雪 2018-05-07 17:40:48

提示的是Staff.java第81行,出现了空指针异常,单看你传的代码Staff这里没有问题。你再看一下HomeworkTest.java的第10行是怎么调用的。是不是你让Staff对象为空了。或者是不是 this.myPos为空了,所以导致this.myPost.getPostNo()或getName()报错了。祝:学习愉快

  • 提问者 Felixxx #1
    试了一下把this.myPost.getPostNo和this.myPost.getName注释掉程序就不保存了,想请问一下具体应该怎么修改
    2018-05-09 08:59:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师