报错:Exception in thread "main" java.lang.NullPointerExceptionException in thread "main" java.lang.NullPointerException
at org.shp.dao.InputData.getInt(InputData.java:20)
at org.shp.dao.Menu.showMain(Menu.java:23)
at org.shp.dao.Menu.<init>(Menu.java:12)
at org.shp.dao.Main.main(Main.java:5)
我的InputData 中的第20 行是:if(!(str.matches("\\[d]"))) // 是对输入字符的校验,不知道是什么地方错了呀,各位大哥帮忙看看。。还有就是:Exception in thread "main" java.lang.NullPointerException 是什么地方错了呀

解决方案 »

  1.   

    org.shp.dao这个包没有引起的空指针异常。具体这是个什么包我也不太清楚,把代码贴上来看下吧,我在swing中遇到过这种情况,一般都是少你引用的jar包,在lib中能找到,解压到根目录就行了。
      

  2.   

    好的!:InputData.java:package org.shp.dao;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;public class InputData {
    private BufferedReader buf = null;

    public InputData(){
    buf = new BufferedReader(new InputStreamReader(System.in));
    }
    public int getInt(){
    int temp = 0;

    String str = null;
    boolean flag = true;
    while(flag){
    this.getString();
    if(!(str.matches("\\[d]"))){
    System.out.println("输入的内容必须是整数,请重新输入:");
    }else {
    temp = Integer.parseInt(str);
    flag = false;
    }
    }
    return temp;
    }
    public String getString(){
    String str = null;
    try{
    str = buf.readLine();
    }catch (IOException e){
    e.printStackTrace();
    }
    return str;
    }
    public float getFloat(){
    float f = 0.0f;
    String str = null;
    boolean flag = true;
    while(flag){
    str = this.getString();
    if(!(str.matches("\\d+.?\\{1,2}"))){
    System.out.println("输入的内容必须是小数:2位小数!请重新输入:");
    }else{
    f = Float.parseFloat(str);
    flag = false;
    }
    }
    return f;
    }}
      

  3.   

    我是在:以下的Menu.java 中调用InputData.java 报错的:Menu.java:package org.shp.dao;public class Menu {
    private InputData input = null;
    private PersonOperate po = null;
    private boolean sflag = true;
    private boolean wflag = true;

    public Menu(){
    this.input = new InputData();
    while(true){
    this.showMain();
    }
    }

    public void showMain(){
    System.out.println("           学校信息管理程序          ");
    System.out.println("           1: 学生信息管理          ");
    System.out.println("           2: 工人信息管理          ");
    System.out.println("           3: 退出系统              ");

    System.out.println("\n\n请选择所需要的操作:");
    switch(input.getInt()){
    case 1 : {
    this.sflag = true;
    while(sflag){
    this.showStudent();
    }
    break;
    }
    case 2 : {
    this.wflag = true;
    while(wflag){
    this.showWorker();
    }
    break;
    }
    case 3 : {
    System.out.println("系统退出,拜拜~~~");
    System.exit(1);
    break;
    }
    default : {
    System.out.println("       选择错误,请重新选择 !");
    break;
    }
    }
    }

    public void showStudent(){
    this.po = new StudentOperate();
    System.out.println("           学生信息管理           ");
    System.out.println("        1: 增加学生信息           ");
    System.out.println("        2: 列出全部学生信息       ");
    System.out.println("        3: 查询学生信息           ");
    System.out.println("        4: 删除学生信息           ");
    System.out.println("        5:修改学生信息           ");
    System.out.println("        6:返回上一级菜单           ");
    System.out.println("\n\n请选择具体的操作:");
    switch(this.input.getInt()){
    case 1: {
    this.po.add();
    break;
    }
    case 2: {
    this.po.findAll();
    break;
    }
    case 3: {
    this.po.findByLike();
    break;
    }
    case 4: {
    this.po.delete();
    break;
    }
    case 5: {
    this.po.update();
    break;
    }
    case 6: {
    this.sflag = false;
    break;
    }
    default: {
    System.out.println("         选择错误,请重新选择 !");
    break;
    }
    }

    }

    public void showWorker(){
    this.po = new WorkerOperate();
    System.out.println("           工人信息管理           ");
    System.out.println("        1: 增加工人信息           ");
    System.out.println("        2: 列出全部工人信息       ");
    System.out.println("        3: 查询工人信息           ");
    System.out.println("        4: 删除工人信息           ");
    System.out.println("        5:修改工人信息           ");
    System.out.println("        6:返回上一级菜单           ");
    System.out.println("\n\n请选择具体的操作:");
    switch(this.input.getInt()){
    case 1: {
    this.po.add();
    break;
    }
    case 2: {
    this.po.findAll();
    break;
    }
    case 3: {
    this.po.findByLike();
    break;
    }
    case 4: {
    this.po.delete();
    break;
    }
    case 5: {
    this.po.update();
    break;
    }
    case 6: {
    this.wflag = false;
    break;
    }
    default: {
    System.out.println("         选择错误,请重新选择 !");
    break;
    }
    }

    }}
    我调出:           学校信息管理程序          
               1: 学生信息管理          
               2: 工人信息管理          
               3: 退出系统              
    请选择所需要的操作:可是一输入任何一个键,就出现:Exception in thread "main" java.lang.NullPointerException
    at org.shp.dao.InputData.getInt(InputData.java:20)
    at org.shp.dao.Menu.showMain(Menu.java:23)
    at org.shp.dao.Menu.<init>(Menu.java:12)
    at org.shp.dao.Main.main(Main.java:5)
      

  4.   

    是那个str 没有初始化,
    我把:str = new INputData().toString 就可以了
    呵呵!