繁体   English   中英

我在Java中遇到了指针问题。 如何修复java.lang.NullPointerException?

[英]I am having a problem with pointers in java. How do I fix a 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 

在while循环中使用.getColumn()并调用.getColumn().getNextColumn()后,请检查matrixentry是否为null

我想如果您先检查一下,代码会更好:

    matrixentry = rowArray[row];

    while (null != maxtrixentry && matrixentry.getColumn() < col) {
         matrixentry = matrixentry.getNextColumn();
    }

    if (null == maxtrixentry || matrixentry.getColumn() > col){
        return 0;
    }
    result = matrixentry.getData();

我建议您对代码运行Findbugs 它捕获了许多小东西,做得非常好,例如,访问完矩阵后对null进行空检查。

您的rowAarray和colArray是否正确初始化?
根据您的评论,它们不是。

您的代码难以阅读,并且检查结果不一致

if (matrixentry.getColumn() > col) { 
    return 0;
}
if (matrixentry == null){ 
    return 0;
} 

您在对象上调用method,然后仅将其检查为null。

如果您打算用编程来束缚自己的生活,而这不仅是一项家庭作业,我建议您将代码表示和表现力视为您的参观证。

您需要预先初始化数组元素。 基本的Sun Java Arrays教程对此进行了介绍 您最终可以使用Arrays#fill()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM