老师,为啥我输出的值是Null
老师,为什么输出员工信息时,部门信息会是Null,检查了好几次还是没找到问题点,但是能在部门类的方法体中能输出相应的值(也就是已经赋值成功了,但输出员工信息还是Null);
另外想知道 == 和 equals的区别在哪,在有些循环结构中 equals("y")和== y的效果不同。
package com.imooc.company;
//职务类
public class Post {
//成员属性:职务编号,职务名称
}
package com.imooc.company;
//部门类
public class Branch {
//成员属性:部门编号,部门名称,员工数组,员工人数
private String braNo;//部门编号
private String braNa;//部门名称
private Staff[] braPes;//员工数组
private Staff braPe;//员工类
private int braNu;//员工人数
//无参构造
public Branch(){
}
//带参构造 内容有:部门编号,名称
public Branch(String braNo,String braNa){
this.setNo(braNo);
this.setNa(braNa);
}
//带参构造 内容有:部门编号,名称,员工数组,员工人数
public Branch(String braNo,String braNa,Staff[] braPes,int braNu){
this.setNo(braNo);
this.setNa(braNa);
this.setPes(braPes);
this.setNum(braNu);
}
//set,get方法
//部门编号
public void setNo(String braNo){
this.braNo=braNo;
}
public String getNo(){
return this.braNo;
}
//部门名称
public void setNa(String braNa){
this.braNa=braNa;
}
public String getNa(){
return this.braNa;
}
//员工数组
public void setPes(Staff[] braPes){
this.braPes=braPes;
}
//如果员工数组内部无空间时,将定义空间
public Staff[] getPes(){
if(this.braPes == null)
this.braPes=new Staff[10];
return this.braPes;
}
//计数
public void setNum(int braNu){
this.braNu=braNu;
}
public int getNum(){
return this.braNu;
}
//员工类
public void setPe(Staff braPe){
this.braPe=braPe;
}
public Staff getPe(){
if(this.braPe == null)
this.braPe=new Staff();
return this.braPe;
}
//统计员工
public void infoNum(Staff bra){
for(int i=0;i<this.braPes.length;i++){
if(this.getPes()[i] == null){
braPe.setBra(this);
this.getPes()[i]=bra;
this.braNu=i+1;
return;
}
}
}
public String infoS(){
String str="ss:"+this.getNa()+"sa:"+this.getNum();
return str;
}
}
package com.imooc.company;
//员工类
public class Staff {
//成员属性:姓名,工号,性别,年龄,所属部门,职务信息
private String name;//姓名
private String workNo;//工号
private String sex;//性别
private int age;//年龄
private Branch workBra;//所属部门
private Post workPost;//职务信息
//无参构造
public Staff(){
}
//带参构造 内容有:员工姓名,工号,性别,年龄
public Staff(String name,String workNo,String sex,int age){
this.setName(name);
this.setNo(workNo);
this.setSex(sex);
this.setAge(age);
}
//带参构造 内容有:员工姓名,工号,性别,年龄.部门,职位
public Staff(String name,String workNo,String sex,int age,Branch workBra,Post workPost){
this.setName(name);
this.setNo(workNo);
this.setSex(sex);
this.setAge(age);
this.setBra(workBra);
this.setPost(workPost);
}
//set/get方法
//名字
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
//工号
public void setNo(String workNo){
this.workNo=workNo;
}
public String getNo(){
return this.workNo;
}
//性别
//性别只能为男女,否则为男
public void setSex(String sex){
if(sex!="男" && sex!="女")
this.sex="男";
else
this.sex=sex;
}
public String getSex(){
return this.sex;
}
//年龄
//年龄为18-65岁之间,否则为18岁
public void setAge(int age){
if(age<18 || age>65)
this.age=18;
else
this.age=age;
}
public int getAge(){
return this.age;
}
//所属部门
public void setBra(Branch workBra){
this.workBra=workBra;
}
public Branch getBra(){
if(this.workBra == null)
this.workBra=new Branch();
return this.workBra;
}
//职务信息
public void setPost(Post workPost){
this.workPost=workPost;
}
public Post getPost(){
if(this.workPost == null)
this.workPost=new Post();
return this.workPost;
}
//显示员工信息
public String infoMa(Branch workBra){
String str="姓名:"+this.name+"\n工号:"+this.workNo+"\n性别:"+this.sex+"\n年龄:"+this.age+"\n职务:"+this.getBra().getNa()+""+this.getPost();
return str;
}
}
package com.imooc.company;
//测试用
public class WorkTest {
public static void main(String[] args) {
//员工类赋值
Staff st=new Staff("张铭","S001","男",29);
Branch br=new Branch("人事部","D001");
br.setPe(st);
//员工类1赋值
Staff st1=new Staff();
st1.setName("李艾爱");
st1.setNo("S002");
st1.setSex("女");
st1.setAge(21);
//员工类2赋值
Staff st2=new Staff();
st2.setName("孙超");
st2.setNo("S003");
st2.setSex("男");
st2.setAge(29);
//员工类3赋值
Staff st3=new Staff();
st3.setName("张美美");
st3.setNo("S004");
st3.setSex("女");
st3.setAge(26);
//员工类4赋值
Staff st4=new Staff();
st4.setName("蓝迪");
st4.setNo("S005");
st4.setSex("男");
st4.setAge(37);
//员工类5赋值
Staff st5=new Staff();
st5.setName("米莉");
st5.setNo("S006");
st5.setSex("女");
st5.setAge(24);
System.out.println(st2.infoMa(br));
System.out.println(br.infoS());
System.out.println();
}
}
正在回答 回答被采纳积分+1
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星