问题描述
程序代码如下:packagecom.demo;importjava.io.*;importjava.util.*;publicclassdemo1_1{/***@paramargs*/publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstubempManageem=newempManage();BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));while(true){System.out.println("请选择你要进行的操作:");System.out.println("1:添加一个员工");System.out.println("2:查找一个员工");System.out.println("3:修改员工工资");System.out.println("4:删除一个员工");System.out.println("5:退出");StringoperType=br.readLine();if(operType.equals("1")){System.out.println("请输入编号:");StringempNo=br.readLine();System.out.println("请输入名字:");Stringname=br.readLine();System.out.println("请输入工资:");floatsal=Float.parseFloat(br.readLine());Empemp=newEmp(empNo,name,sal);em.addEmp(emp);}elseif(operType.equals("2")){System.out.println("请输入需要查找的编号:");StringempNo=br.readLine();em.showInfo(empNo);}elseif(operType.equals("3")){System.out.println("请输入需要查找的编号:");StringempNo=br.readLine();em.updateSal(empNo,2000);}elseif(operType.equals("4")){System.out.println("请输入需要删除的编号:");StringempNo=br.readLine();em.delEmp(empNo);}elseif(operType.equals("5")){System.exit(0);}}}}classempManage{ArrayListal=null;publicvoidempManage(){al=newArrayList();}publicvoidaddEmp(Empemp){al.add(emp);}publicvoidshowInfo(StringempNo){//遍历整个ArrayListfor(inti=0;i<al.size();i++){//取出Emp对象Empemp=(Emp)al.get(i);if(emp.getEmpNo().equals(empNo)){System.out.println("找到该员工,他的信息是:");System.out.println("编号"+empNo);System.out.println("姓名"+emp.getName());System.out.println("工资"+emp.getSal());}}}publicvoidupdateSal(StringempNo,floatnewSal){for(inti=0;i<al.size();i++){Empemp=(Emp)al.get(i);if(emp.getEmpNo().equals(empNo)){emp.setSal(newSal);}}}publicvoiddelEmp(StringempNo){for(inti=0;i<al.size();i++){Empemp=(Emp)al.get(i);if(emp.getEmpNo().equals(empNo)){al.remove(i);//或者是al.remove(emp);}}}}classEmp{StringempNo;Stringname;floatsal;publicStringgetEmpNo(){returnempNo;}publicvoidsetEmpNo(StringempNo){this.empNo=empNo;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicfloatgetSal(){returnsal;}publicvoidsetSal(floatsal){this.sal=sal;}publicEmp(StringempNo,Stringname,floatsal){this.empNo=empNo;this.name=name;this.sal=sal;}}运行一次选择之后会报出空指针异常,我是根据视频讲解写下的源代码,为什么会出现异常了,求解。拜托各位大侠,请教这是什么问题,该如何解决了。因为新手上路,很多都不懂,恳请各位大侠指导,谢谢
解决方案
解决方案二:
publicvoidempManage(){al=newArrayList();}带有返回值的方法不是构造方法,就变成了一个普通方法了,并且有一个空的默认构造方法。所以你需要把void去掉,改成下面这样,al才会初始化publicempManage(){al=newArrayList();}
解决方案三:
或者用empManage的实例化对象调用一下方法empManage();同上楼的意思
解决方案四:
解决方案五:
去掉void就好了
解决方案六:
构造方法没有返回值类型同意一楼看法去掉void不然publicvoidempManage()就会变成一个成员方法
解决方案七:
该回复于2014-09-22 08:45:02被版主删除