我写了一个验证信用卡的功能。它使用卡号的最后10位数字。卡号存储为String。我想弄清楚如何将卡号的最后10位数转换为数组编号。我在堆栈溢出时发现了一些代码,但它使用String的字符串instad。因此,当我尝试以箭头形式访问字符串时出现错误
代码:
int[] n = { 0, 0, 0, 8, 2, 9, 8, 7, 0, 1 };
boolean ValidCredt()
{
String strNum = "1230008298701";
int p = strNum.length() - 1;
int pt = 9;
// this is where I'm trying to convert the String into a arrow of
// numbers
for (int i = 0; i < 10; i++)
{
n[pt--] = strNum[p--] - '0'; // get a error for tryinmg to usr
// String as a array
}
// step 1 double every other digit
n[9] = n[9] + n[9];
n[7] = n[7] + n[7];
n[5] = n[5] + n[5];
n[3] = n[3] + n[3];
n[1] = n[1] + n[1];
// Your number is now “0-0-0-16-2-18-8-14-0-2.”
// step 3 add together 2 digy
for (int i = 0; i < n.length; i++)
{
if (n[i] > 9)
{
int low = n[i] % 10;
int hi = n[i] / 10;
n[i] = low + hi;
}
}
// Your number is now “0-0-0-7-2-9-8-5-0-2.”
// step 4
int sum = 0;
for (int i = 0; i < n.length; i++)
sum = sum + n[i];
// step 5
int step5 = sum * 9;
int step5b = 10 - sum % 10;
// step 6
int step6 = sum + step5 % 10;
if (step5 % 10 == 0)
return true;
return false;
}
答案 0 :(得分:3)
我不确定你为什么要尝试这么复杂的东西,但我认为这可能有用:
String ccNumber = "1234567890";
char[] characters = ccNumber.toCharArray();
int[] result = new int[characters.length];
int i = 0;
for (char c : characters) {
result[i++] = c - '0';
}
答案 1 :(得分:1)
int[] result = new int[string.size()];
for(int i = 0; i < string.size(); i++){
result[i] = string.charAt(i) - '0';
}
答案 2 :(得分:-1)
如果你想将一个String转换为no.s数组,那么你必须先做两件事,你必须创建包含原始字符串中单个字符的String数组,然后你可以使用Integer将字符串数组转换为整数.parseInt(&#34;你的字符串&#34;);这肯定会解决你的问题。