我正在尝试创建自己的信用卡验证器版本,目前我正在使用Luhn算法检查数字。在这段代码中,我将信用卡数字移入和移出数组,并将它们从ints更改为字符串,反之亦然。 这是我的代码片段:
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]));
我已经使用print语句检查了数组,并从信用卡返回了数字字符串。为什么它给我一个空指针?如果有帮助,我可以粘贴其余的代码。
感谢。
PS我还没有超过这一行,所以我不确定其他部分是否有效。
答案 0 :(得分:1)
简单:holdDigitsChar
为空。下次尝试更努力地搜索。