gpt4 book ai didi

java - 维度 2 的自定义对象数组的初始化

转载 作者:行者123 更新时间:2023-12-02 01:49:31 25 4
gpt4 key购买 nike

我正在尝试初始化一个二维数组(我创建的类对象),但我仍然遇到相同的运行时错误:

Exception in thread "main" java.lang.NullPoointerException
at ........

我已经成功地使用原始类型来做到这一点,但没有使用扩展对象的类型,我想知道这是否可能(以及如果是这种情况如何)。

这是我的代码示例:

MyCustomObject[][] matrix = new MyCustomObject[10][10];

for (int i = 0; i < 10; i += 1)
matrix[i][0] = new MyCustomObject("some arguments ...");

The error is marked at the line were I try to give a value to the matrix: matrix[i][0] = ....

据我研究后了解到,Java 为数组的每个成员赋予了 null 值,这对我来说没问题。但是,当我尝试用现有值替换空值时,为什么它会标记我一个错误。我不会在 null 上调用方法。

编辑

完整代码:

int sourceLength = source.length(); // Length of a CharSequence
int targetLength = target.length(); // Length of a CharSequence
Matrix distanceMatrix[][] = new Matrix[sourceLength][targetLength];

for (int row = 1; row < sourceLength; row += 1) {
distanceMatrix[row][0] = new Matrix( // The error is marked at this line.
distanceMatrix[row - 1][0].cost + option.getDeletionCost(),
row - 1,
0
);
}

for (int column = 1; column < targetLength; column += 1) {
distanceMatrix[0][column] = new Matrix(
distanceMatrix[0][column - 1].cost + option.getInsertionCost(),
0,
column - 1
);
}

for (int row = 1; row < sourceLength; row += 1) {
for (int column = 1; column < targetLength; column += 1) {

// do more stuff.

}
}

Matrix 类(位于主类内部):

public final static class Matrix {

public int cost;
public int row;
public int column;

public Matrix(int cost, int row, int column) {
this.cost = cost;
this.row = row;
this.column = column;
}

@Override
public boolean equals(Object obj) {
if (obj instanceof Matrix)
return (cost == ((Matrix)obj).cost
&& row == ((Matrix)obj).row
&& column == ((Matrix)obj).column);
return (super.equals(obj));
}

}

堆栈跟踪:

Exception in thread "main" java.lang.NullPointerException
at net.azzerial.gt.core.Fuzzy.distance(Fuzzy.java:54)
at net.azzerial.gt.core.Fuzzy.levenshteinDistance(Fuzzy.java:24)
at net.azzerial.gt.Test.main(Test.java:15)

最佳答案

我尝试了同样的方法并且有效。这是我的代码:

 public class StackOverFlow {

public static void main(String[] args) {
Foo[][] foos = new Foo[10][10];
for(int i=0;i<10;i++){
foos[i][0]= new Foo();
}
}

public static class Foo{
}
}

你能告诉我们你正在使用哪个版本的java以及你的pom.xml(如果你使用的是maven)吗?另外,为了确定起见,您还可以发布 MyCustomObject 的代码片段。

关于java - 维度 2 的自定义对象数组的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53207260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com