我在java中遇到了指针问题。如何修复 java.lang.NullPointerException?
这是java中从稀疏矩阵中获取元素的方法。我不断收到 java.lang.NullPointerException
错误。我查看了代码,找不到错误。
public int getElement(int row,int col){
int result = 0;
MatrixEntry matrixentry = null;
if ((row >= 0) && (row < getNumRows()) &&
(col >= 0) && (col < getNumCols())) {
if (col == colArray[col].getColumn() && row ==rowArray[row].getRow()){
matrixentry = rowArray[row];
while (matrixentry.getColumn() < col) {
matrixentry = matrixentry.getNextColumn();
} // end while
if (matrixentry.getColumn() > col){
return 0;
}
if (matrixentry == null){
return 0;
}//
result = matrixentry.getData();
}//
}//
return result;
} // end
This is a method that gets a element from a Sparse Matrix in java. I keep getting a java.lang.NullPointerException
error. I have looked over the code and can't find the error.
public int getElement(int row,int col){
int result = 0;
MatrixEntry matrixentry = null;
if ((row >= 0) && (row < getNumRows()) &&
(col >= 0) && (col < getNumCols())) {
if (col == colArray[col].getColumn() && row ==rowArray[row].getRow()){
matrixentry = rowArray[row];
while (matrixentry.getColumn() < col) {
matrixentry = matrixentry.getNextColumn();
} // end while
if (matrixentry.getColumn() > col){
return 0;
}
if (matrixentry == null){
return 0;
}//
result = matrixentry.getData();
}//
}//
return result;
} // end
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在 while 循环中使用了
matrixentry
并调用.getColumn()
和.getNextColumn() 后,您可以检查
。matrixentry
是否为null
我想如果你先检查一下你的代码会做得更好:
You check
matrixentry
fornull
after you already used it in the while loop and to call.getColumn()
and.getNextColumn()
.I guess your code would do better if you checked first:
我建议您也在代码上运行 Findbugs。它在捕获许多小事情方面做得非常出色,例如在访问矩阵条目后对其进行空检查。
I recommend that you run Findbugs on your code as well. It does an amazing job catching lots of little things, for example the null check on matrixentry after you've already accessed it.
您需要预先初始化数组元素。基本的 Sun Java 数组教程 对此进行了介绍。您最终可以使用
Arrays#fill()
为此。You need to preinitialize the array elements. That's covered by the basic Sun Java Arrays tutorial. You could eventually use
Arrays#fill()
for that.您的 rowAarray 和 colArray 是否已正确初始化?
根据你的评论,他们不是。
您的代码很难阅读,并且存在不一致的检查,例如
您在对象上调用方法,然后才检查它是否为 null。
如果你打算将你的生活与编程联系起来,并且它不仅仅是一项家庭作业,我建议你将你的代码演示和表现力视为你的名片。
Are your rowAarray and colArray properly initialized?
According to your comment they are not.
Your code is hard to read and there are inconsistent checks like this
You call method on the object and only then check it for null.
If your are going to bind your life with the programming and it is not just a HomeWork I would recommend to you to treat your code presentation and expressiveness as your visit card.