2014-07-16 31 views
0

我努力使自己的信用卡驗證的版本數據,目前我在使用盧恩算法檢查數字的過程。在這段代碼片段中,我將信用卡數字移入和移出數組,並將它們從整數更改爲字符串,反之亦然。 這裏是我的代碼片段:獲得一個NullPointerException異常時,顯然我的陣列中有

public static void checkDigits(){ 
    System.out.println("Printing out charat card:"); 
    //check digits 
    checkDigits = new int[length]; 
    for(int i = 0; i < length ; i++){ 
    checkDigits[i] = Integer.parseInt(card.substring(i,i+1)); 

    //successfully puts digits into array 
    } 
    for(int e = length-2; e >= 0; e-=2){ 
    checkDigits[e] = 2*checkDigits[e]; 
    } 
    for(int d = 0; d < length; d++){ 
    holdDigitsChar.add(String.valueOf(checkDigits[d])); 
    } 
    for(int v = 0; v<length;v++){ 
    if(holdDigitsChar.get(v).length() == 2){ 
     holdDigits.add(Integer.parseInt(holdDigitsChar.get(v).substring(0,1))); 
     holdDigits.add(Integer.parseInt(holdDigitsChar.get(v).substring(1,2))); 
    } 
    else{ 
     holdDigits.add(Integer.parseInt(holdDigitsChar.get(v))); 
    } 
    } 
    for(int c = 0; c < holdDigits.size(); c++){ 
    checkSum += holdDigits.get(c); 
    } 
    System.out.println("Check sum:" +checkSum); 
} 

跟它有就行了NPE:

holdDigitsChar.add(String.valueOf(checkDigits[d])); 

我已經檢查了陣列打印報表,它返回的數字從字符串信用卡。爲什麼它給了我一個空指針?如果這有幫助,我可以粘貼其餘的代碼。

謝謝。

PS我還沒有得到過去的這條線,所以我不知道,如果其他部分仍然可以正常工作。

+0

的NPE意味着holdDigitsChar爲空,不checkDigits –

回答

0

簡單:holdDigitsChar爲空。下次嘗試更難搜索。

+0

謝謝,我往往會得到編程困難的部分了,但總是錯過了微小的事情。 – SoloSpirit

相關問題