java - Java测试时出现空指针异常

标签 java string netbeans nullpointerexception

public boolean isItMyName(String name)
    {    
       name = fullname.substring(0,fullname.indexOf(' '));
       ...
    }

然后我的代码继续下去。当我运行它时,我得到一个空指针异常并且错误指向这一行。

我还创建了一个 JUnit 测试器,用于测试输入是真还是假。

Name myName = new Name();
assertEquals(false, myName.isItMyName("Troll");

它还在 assertEquals(false, myName.isItMyName("Troll")); 处给我一个空指针异常

我已经无计可施了。我该如何解决?

@格雷格休吉尔:

在我的 Name 类中,我这样做:

public class Name(String n)
{
  name = n;
}

但在我的主要方法中,我传入了字符串:Name myName = new Name("Johnathy");

所以字符串不为空。

全名:

public class EmailAddress {
private String address;



public EmailAddress(String a)
{
  address = a;

}

public String toString()
{
    return address;
}

最佳答案

好吧,你忽略了你的参数......你在第一行中为 name 分配了一个新值。这意味着您的方法几乎肯定从一开始就被破坏了。

然后考虑 fullname(我假设它是一个实例变量)的来源。除非您在无参数构造函数中将其设置为一个值,否则默认情况下它将为 null。这真的是你想要的吗?

我建议您将Name 类更改为 具有采用名称参数的构造函数,并且验证它们不为空。这样你就永远不会有一个无效的 Name 对象,其中全名是 null

编辑:现在您已经发布了更多代码,请查看您的无参数构造函数和 setName 方法:

public Name()
{
   setName(fullname);     
}

public void setName(String n)
{
    fullname = n;
}

这意味着您的无参数构造函数等同于:

public Name()
{
   fullname = fullname;
}

...即空操作。 fullname 将为空,因此异常。

我的建议是完全摆脱无参数构造函数,让另一个构造函数验证参数。

关于java - Java测试时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780908/

相关文章:

java - 验证用户名的正则表达式

c - 为什么打印语句之间有间隙?

c - C 中不同文件循环中的 Search_string

java - 如何仅从子元素获取文本 - Webdriver - Java

java - 使用 maven 运行单个测试方法

java - java代码颜色示例中>>和&运算符的含义是什么

javascript - 检查对象中的任何变量是否有 null/undefined/emptyString ('' )

linux - 如何在 bash 中复制字符串?

Netbeans 安装程序

java - 无法在 Netbeans JavaFX 项目中集成使用 SceneBuilder 生成的 FXML