【问题标题】:java error java.lang.NullPointerExceptionjava错误java.lang.NullPointerException
【发布时间】:2014-02-24 17:55:23
【问题描述】:

我写了这个方法,它将一个对象添加到数组中 但它给我这个错误

Exception in thread "main" java.lang.NullPointerException

我检查了所有变量,我认为没有任何 null :((

这是我的添加方法

    }
}

错误在 add_b() 方法中

Exception in thread "main" java.lang.NullPointerException
    at Kindergarten.add_b(Kindergarten.java:39)
    at ClientClass.main(ClientClass.java:22)

【问题讨论】:

  • 粘贴堆栈跟踪。
  • 您需要 (1) 向我们展示所有代码,而不仅仅是 认为可能存在问题的部分 (2) 告诉我们在堆栈跟踪,所以我们不必猜测。没有这些东西,没有人可以帮助你。
  • @DavidWallace 我真的很抱歉这是我第一次在这里问,我编辑它,你能帮我吗? :(
  • "添加一个婴儿" ?这是什么程序? :-D @user3347862 做一个SSCCE
  • 你应该考虑更好地构建你的代码

标签: java arrays object null add


【解决方案1】:

您在 Kindergarten 构造函数中有错误,您正在创建局部变量,而不是初始化 arr,它应该如下所示:

public Kindergarten(String name, int numOfbaby) {
    this.name = name;
    arr = new BABY[numOfbaby];
    currnt = 0;
}

其次,你有一个无限循环,移动指令和读取输入到循环中。

另一个问题是您的格式参数无效,只需使用普通连接

最后,但并非最不重要的是,您在 display_all 方法中缺少 System.out.println

循环应该像这样开始:

Kindergarten k = new Kindergarten("baby", 10);

while (true) {
    System.out
            .println("what do you want to do? \n a-add a baby. \n b-search for a baby \n c-Delet a baby. \n d-Display all babys.\n e-how many babys need inoculation \n f-exit");
    char f = read.next().charAt(0);
//(...)
}

【讨论】:

  • 另一个问题是,在main中,BABY是用null年龄创建的,然后在Kindergarten.add_b(BABY)中,使用了copy-constructor,它试图从baby中检索年龄.
  • @gla3dr 实际上,年龄不是null,只是0,但我想这也应该包含在创建过程中。
  • @endriu_l 请您澄清一下“将指令和输入读取移动到循环中”。我英语不好抱歉
  • @gla3dr 谢谢你:我用 set 方法做了年龄,它有效!但我有无限循环 XD
【解决方案2】:

首先,arr 的初始化只发生在第二个 Kindergarten 构造函数中。 在第一个幼儿园构造函数中,arr 是一个局部变量。 BABY arr[]=new BABY[numOfbaby];

此外,setarrsetnamesetcurrnt 等方法也未使用。如果不使用可以清理一下就好了。

【讨论】:

  • 是的,我知道我不使用它,但这是一个家庭作业,他们要求我们这样做,非常感谢您
猜你喜欢
  • 1970-01-01
  • 2013-12-19
  • 2013-07-28
  • 2013-10-14
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多