这是一种从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
答案 0 :(得分:1)
您在{while循环中使用matrixentry
之后检查null
.getColumn()
,并致电.getNextColumn()
和 matrixentry = rowArray[row];
while (null != maxtrixentry && matrixentry.getColumn() < col) {
matrixentry = matrixentry.getNextColumn();
}
if (null == maxtrixentry || matrixentry.getColumn() > col){
return 0;
}
result = matrixentry.getData();
。
我猜你的代码会在你先检查后做得更好:
{{1}}
答案 1 :(得分:1)
我建议您也在代码上运行Findbugs。捕获大量小东西确实很棒,例如在你访问了matrixentry之后对其进行空检查。
答案 2 :(得分:0)
你的rowAarray和colArray是否正确初始化了?
根据你的评论他们不是。
您的代码难以阅读且存在不一致的检查
if (matrixentry.getColumn() > col) {
return 0;
}
if (matrixentry == null){
return 0;
}
您在对象上调用方法,然后将其检查为null。
如果您打算将您的生活与节目联系在一起,并且它不仅仅是一个HomeWork,我建议您将代码演示和表现力视为您的访问卡。
答案 3 :(得分:0)
您需要预初始化数组元素。基本Sun Java Arrays tutorial涵盖了这一点。你最终可以使用Arrays#fill()
。