用Java为二维数组赋值



我需要给我的二维数组赋值。

我试着按照下面的方式进行编码,但我得到了NullPointer异常错误。

MethodClass[][] methodSet = new MethodClass[1][1];
methodSet[0][0].setmethodName(1);
methodSet[0][1].setmethodStatus(1);

MethodClass文件:

public class MethodClass {
private int methodName;
private int methodStatus;
public MethodClass() {
methodName = 0;
methodStatus = 0;
}
public int getmethodName() {
return methodName;
}
public int getmethodStatus() {
return methodStatus;
}
public void setmethodName(int i) {
this.methodName = i;
}
public void setmethodStatus(int status) {
this.methodStatus = status;
}
}

我可以知道如何将值初始化为二维数组吗?

当您试图访问类的成员,但该类的实例本身包含null值时,会发生NullPointerException。

为了在您的情况下防止NullPointerException,您必须初始化数组值,因为对于Object类型的数组,位置中的默认值将是NULL

更好的做法:

MethodClass[][] methodArray = new MethodClass[1][1]; //You can put any dimentions to this array, below for loop will initialize all the positions.
for (int i = 0; i < methodArray.length; i++){
for (int j = 0; j < methodArray[i].length; j++) {
methodArray[i][j] = new MethodClass();
}
}

然后你可以访问你的方法如下:

methodArray[0][0].setmethodName(1);
methodArray[0][0].setmethodStatus(1);

您已经将2D数组初始化为1x1,这意味着数组中只有一个元素。尝试使用索引1将引发错误[索引从0开始]。

如果你想去那里,初始化为一个2x2数组。

你基本上是越界了,所以如果它是一个数组,你会得到一个ArrayIndexOutOfBoundsException。

初始化为:

MethodClass[][] methodset = new MethodClass[2][2];

MethodClass[][] methodSet = new MethodClass[1][1]只是在初始化您的数组。要初始化数组中的元素,您需要执行以下代码。

MethodClass[][] methodSet = new MethodClass[1][1];
methodSet[0][0]=new MethodClass();
methodSet[0][0].setmethodName(1);

其次,对于methodset[0][1],您需要更改大小,否则它将抛出ArrayIndexOutOfBoundsException

MethodClass[][] methodSet = new MethodClass[1][2];

您正在声明一个1*1的矩阵,其大小为1。只有索引为(0,0(。(0,1(无效。

尝试使用以下代码,

MethodClass.java

public class MethodClass {
private int methodName;
private int methodStatus;
public MethodClass() {
methodName = 0;
methodStatus = 0;
}
public MethodClass(int methodName, int methodStatus) {
this.methodName = methodName;
this.methodStatus = methodStatus;
}
public int getMethodName() {
return methodName;
}
public void setMethodName(int methodName) {
this.methodName = methodName;
}
public int getMethodStatus() {
return methodStatus;
}
public void setMethodStatus(int methodStatus) {
this.methodStatus = methodStatus;
}
}

测试Java

public class Test {
public static void main(String a[]){
MethodClass[][] methodSet = new MethodClass[2][2];
methodSet[0][0] = new MethodClass(0, 0);
methodSet[0][1] = new MethodClass(0, 1);
methodSet[1][0] = new MethodClass(1, 0);
methodSet[1][1] = new MethodClass(1, 1);
System.out.println(methodSet);
}
}
当您试图访问类的方法/函数,但该类的实例本身包含Null值时,会显示Null指针异常。例如CCD_ 7将抛出异常。

在你的情况下,解决办法是,首先用类的构造函数初始化MethodClass 2D数组,这样,2D数组的每个单元都包含MethodClass实例。

MethodClass[][] methodSet = new MethodClass[1][1];
//since the array size of each cell is fixed to 1 in 
//your case. So you can loop for row and column from 0 to less then 1 for 0 
//indexed cells. otherwise you could also use i<methodSet.length for row and
//j<methodSet[i].length for column
for(int i=0;i<1;i++){ 
for(int j=0;j<1;j++){
methodSet[i][j]=new MethodClass(); // your MethodClass constructor
}
}

然后你可以访问你的方法/功能如下:

methodSet[0][0].setmethodName(1); // since the size of each cell of the 2D array is one in your case and index starts from zero so only cell [0][0] is valid in this case
methodSet[0][0].setmethodStatus(1);

相关内容

  • 没有找到相关文章

最新更新