空指针异常&如何克服它

时间:2014-03-20 16:47:40

标签: java exception pointers null nullpointerexception

在为我的代码运行公开测试时,我在类似的行上收到了2个错误。错误是:

空指针异常错误及其出现的行是getCurrentLocation& getName在其中。

  

assertEquals(“最初,Parrade在Fun Fire”,“Fun Fire”,parrade.getCurrentLocation()。getName());

     

parrade.move();

我的构造函数的完整代码以及getCurrentLocation& getName如下:

代码:

public abstract class Ride {
private String name;
private int duration;
private int batchSize;
private ArrayList<Amuser> currentAmusers;
private int ridesToMaintain;
private FunRide location;

public Ride() {
    this.name = "Serpent";
    this.duration = 5;
    this.batchSize = 20;
    this.ridesToMaintain = 10;
    this.currentAmusers = new ArrayList<Amuser>();
}

public Ride(String name, int duration, int batchSize) {
    this.name = name;
    this.duration = duration;
    this.batchSize = batchSize;
    this.ridesToMaintain = 10;
    this.currentAmusers = new ArrayList<Amuser>();
}

public FunRide getCurrentLocation() {
    return this.location;
}

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

如果这是导致NullPointerException

的行
assertEquals("Initially, Parrade is at Fun Fire", "Fun Fire", parrade
   .getCurrentLocation().getName());

然后parradeparrade.getCurrentLocation()等于nullparrade.getCurrentLocation().getName()投掷一个(后者似乎不太可能)。但由于此变量在您发布的代码中没有任何内容,我担心我们无法帮助您更多。

你必须已经拥有这样的东西(假设parrade是罪魁祸首)

private Parade parrade = null;

private Parade parrade;

意味着你已经declared这个变量,但你还没有对它进行初始化。用以下内容初始化它:

parrade = new Parade();

答案 1 :(得分:0)

获取空指针的原因是因为永远不会设置位置或名称的值。声明所有实例变量时,它们最初为null,因此如果在实例化它们之前尝试使用它们,它将抛出空指针异常。