簡體   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