2014-07-16 29 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

相关问题