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我还没有得到过去的这条线,所以我不知道,如果其他部分仍然可以正常工作。
的NPE意味着holdDigitsChar为空,不checkDigits –