读书人

哪位高手能帮小弟我看下错在哪里?代码

发布时间: 2013-06-25 23:45:41 作者: rapoo

谁能帮我看下错在哪里?代码 已贴出
1.class RouteState


package rungame;


public class RouteState
{
public int positionX=0;
public int positionY=0;
public void set(int x,int y){
positionX = x;
positionY = y;
}
public int getX(){
return positionX;
}
public int getY(){
return positionY;
}

}

2.class PlayerRoute :

package rungame;

import java.util.Vector;

public class PlayerRoute {

public static PlayerRoute instance = null;
//private RouteState rs = null;
private Vector<RouteState> playerroutestate = null;

private PlayerRoute(){

if(playerroutestate==null){
playerroutestate = new Vector<RouteState>();
}
}


public static PlayerRoute getInstance(){
if(instance ==null){
instance = new PlayerRoute();
}
return instance;
}

public void addRoute(RouteState rs){

if(rs!=null){
playerroutestate.addElement(rs);
}//出错行
}
public void delLastRoute(){
playerroutestate.remove(playerroutestate.size());
}
public Vector<RouteState> returnLastRoute(){
delLastRoute();
return playerroutestate;

}

public Vector<RouteState> getPlayerRoute(){
return playerroutestate;
}

}

3.test测算代码

import rungame.PlayerRoute;
import rungame.RouteState;


public class test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
RouteState rs = new RouteState();
rs.set(2, 1);
//System.out.print(rs.getX()+"\n");
PlayerRoute pr= PlayerRoute.getInstance();
pr.addRoute(rs);//出错行
rs=(RouteState)pr.getPlayerRoute().elementAt(1);
int i =rs.getX();
System.out.print(i);
}

}


显示的错误信息。为什么会是空的?

Exception in thread "main" java.lang.NullPointerException
at rungame.PlayerRoute.addRoute(PlayerRoute.java:25)
at test.main(test.java:16)

[解决办法]
你debug试试,playerroutestate = null吧。。
[解决办法]
private PlayerRoute(){



if(playerroutestate==null){
playerroutestate = new Vector<RouteState>();
}
}

你看你 构造方法内没有为pr 赋值。。所有null了
[解决办法]
貌似是在PlayerRoute类的第8行中的private RouteState rs=null给注释掉了导致第26行中的addRoute方法无法接收参数(RouteState rs)所致;
[解决办法]
应该是17行出错了,即pr.getPlayerRoute()应该是null!
[解决办法]


rs=(RouteState)pr.getPlayerRoute().elementAt(1);

应该是这一行有错,pr中只有一个元素,而你去取下标为1的(也就是第二个元素),它肯定会报错的!

读书人网 >J2EE开发

热点推荐