java空指针问题求解

问题描述

程序代码如下: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被版主删除

时间: 2024-09-30 17:57:58

java空指针问题求解的相关文章

java-关于Java链栈判断回文出现的空指针问题求解答-0-

问题描述 关于Java链栈判断回文出现的空指针问题求解答-0- public boolean isPalindSeq(String str)throws Exception{ if (str == null) { return false; } LinkStack s1=new LinkStack(); int i=0; do{ if(Character.isWhitespace((str.charAt(i)))){ i++; continue; } else{ s1.push(str.char

java getmethod 方法-java getmethod() 问题求解

问题描述 java getmethod() 问题求解 package demo; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet

java多态问题求解 引用方面 谢谢

问题描述 java多态问题求解 引用方面 谢谢 java中 父类的引用指向子类对象有什么用啊?父类的引用反映的又是什么呢? 解决方案 首先,多态概念的体现在于:该引用对象的行为是由它真实的子类类型决定的.其次, 父类类型的引用指向子类类型的实例,这是一种面向抽象编程的编程思想,将变量定义成抽象类型,那么对变量的使用代码可以保持不变,当客户端则根据自己需要传递该抽象类的实现.这种写法很常用,就是经典的面向抽象编程原则. 解决方案二: 你先弄清楚多态的作用,你就明白了 解决方案三: 多态就是同类事物

简单的java 空指针错误 高手给小弟讲下

问题描述 publicclassTest{publicstaticvoidmain(String[]args){//TODO自动生成方法存根String[]a=newString[12];args=newString[12];if(args[0].length()<=0)return;System.out.println("输入的月份为:"+args[0]);intmonth=8;try{month=Integer.parseInt(args[0]);}catch(NumberF

java诡异问题求解

问题描述 package hello;public class Test {public static double area(double d){return d * d;}public static double perimeter(double d){return d * 4;}public static void main(String args[]){double d = 3.1;System.out.println("面积:" + area(d));System.out.p

java求助空指针问题 、、、、、、、、、

问题描述 java求助空指针问题 ......... 一个读取TXT文件到arratlist中方法,主函数调用,54行出现空指针异常问题,怎么解决 解决方案 加上一个判断 if (reader.hasNextline() && !(str = reader.readLine()).equals("")) 解决方案二: 首先说明这个文件为空或者不存在,其次,第54行写的是不对的,不是判空,而是判断是否为null,这两者是完全不同的,对一个根本不存在的对象进行与空字符串的比

Java 下一代: Groovy、Scala 和 Clojure 中的共同点(三)

反思异常.表达式和空 在 上一期文章 中,我介绍了 Java 下一代语言用来消除 Java 语言中华而不实的东西和复杂性的创新方式.在这一期 文章中,我将展示这些语言如何消除 Java  的一些瑕疵:异常.语句与表达式,以及围绕 null 的边缘情况. 表达式 Java  语言从 C 语言那里继承的一项传承是区分编程语言 和编程表达式.Java 语句的示例包 括使用 if 或 while 的代码行,以及使用 void 来声明不会返回任何值的方法的代码行.表达式(比如 1 + 2 )用于求取 某一

Java程序异常处理的特殊情况

1.不能在finally块中执行return,continue等语句,否则会把异常"吃掉"; 2.在try,catch中如果有return语句,则在执行return之前先执行finally块 请大家仔细看下面的例子: public class TryTest {public static void main(String[] args) {try {System.out.println(TryTest.test());// 返回结果为true其没有任何异常} catch (Except

java局部变量问题求解答

问题描述 java局部变量问题求解答 关于java的局部变量问题,在方法中定义了一个局部变量,未赋值,然后在for语句里给其赋值,然后打印却报错,而如果在定义的时候就给它赋值,最后打印的则是在for语句里赋的值,这是什么原因啊?如下图所例,求大神们解答,想了很久都没想过来,求详解 解决方案 这不是局部变量的问题,因为java的语法严谨,你声明了变量 i ,条件代码块里对它赋值,如果条件不成立(编译器可不知道你的条件到底成不成立),即赋值没做,那你就在对没有值的变量操作,java肯定是不允许的 解