Java未初始化类,返回空异常错误
在函数中使用类连接时出现令人沮丧的null异常错误。该类应该初始化,所以这不应该是一个问题。帮助Java未初始化类,返回空异常错误,java,Java,在函数中使用类连接时出现令人沮丧的null异常错误。该类应该初始化,所以这不应该是一个问题。帮助 class RobotData { class Junction { public int juncX; public int juncY; public int arrivalHeading; } private static int maxJunctions = 10000; //Max junctions likely to occur private static
class RobotData {
class Junction {
public int juncX;
public int juncY;
public int arrivalHeading;
}
private static int maxJunctions = 10000; //Max junctions likely to occur
private static int junctionCounter;
private static Junction[] junction;
RobotData() {
junctionCounter = 0;
junction = new Junction[maxJunctions];
}
public void resetJunctionCounter() { junctionCounter = 0; }
public void recordJunction(IRobot robot) {
junction[junctionCounter].juncX = robot.getLocation().x;
junction[junctionCounter].juncY = robot.getLocation().y;
junction[junctionCounter].arrivalHeading = robot.getHeading();
junctionCounter++;
}
public void printJunction() {
System.out.println(junction[junctionCounter].juncX);
System.out.println(junction[junctionCounter].juncY);
System.out.println(junction[junctionCounter].arrivalHeading);
}
}
RobotData类被正确初始化,但是当调用函数时,我得到一个null错误,表明连接[junctionCounter]尚未初始化。不确定为什么(显然),因为当RobotData被激活时,它应该被初始化 写这行时:
junction = new Junction[maxJunctions];
创建一个maxJunctions引用数组,引用堆上的Junction
实例。在通过调用new
将它们指向堆上的对象之前,它们都是空的
还有一个想法:
public class Junction {
public final int juncX;
public final int juncY;
public final int arrivalHeading;
public String toString() {
return String.format("x = %d y = %d arrivalHeader = %d", juncX, juncY, arrivalHeading);
}
}
public class RobotData {
private List<Junction> junctions;
RobotData() {
this.junctions = new ArrayList<Junction>();
}
public void recordJunction(IRobot robot) {
Junction junction = new Junction();
junction.juncX = robot.getLocation().x;
junction.juncY = robot.getLocation().y;
junction.arrivalHeading = robot.getHeading();
junctions.add(junction);
}
}
公共类连接{
公共最后关卡;
公共最后关头;
公共最终到达标题;
公共字符串toString(){
返回String.format(“x=%d y=%d arrivalHeader=%d”,juncX,juncY,arrivalHeading);
}
}
公共类机器人数据{
私人名单路口;
机器人数据(){
this.junctions=新的ArrayList();
}
公共连接(IRobot机器人){
连接=新连接();
junction.juncX=robot.getLocation().x;
junction.juncY=robot.getLocation().y;
junction.arrivalHeading=robot.getHeading();
连接。添加(连接);
}
}
堆栈跟踪在哪里?使用调试器。发生这种情况时,junctionCounter
的值是多少?另外,如果变量在构造函数中被“初始化”,为什么变量是静态的?不确定,但我认为这是因为类只在程序开始时构造的,但它的父类不断被调用,每次调用时都会重置值。在规范中,它们必须是静态的,所以…我不完全理解。因为这是一个数组,它声明了数组,但没有初始化每个元素?有没有一种不循环的方法可以做到这一点?请阅读数组的Java简介文本。这应该包括在内。我很好奇:你认为连接应该初始化为什么?应该怎么做?很抱歉,我一直在尝试阅读,从我在互联网上可以找到的内容,例如oops并不意味着挂起,我想有效地转到junction[0]。juncX并获取第一个记录的junction juncX变量,并将其设置为某个值。我很确定我是用VB做的,但我对java完全陌生。从你在这里所做的,我得到的想法是,你不能一次初始化每个数组元素,你必须手动完成它?实际上,为什么我需要一次完成它们,我可以像你一样在创建一个新的数组元素时完成它。。。hmmYou没有记录一个连接实例,直到你做了我所做的。看起来好多了。