试图将数字字符串转换为数字数组

时间:2014-08-01 19:09:51

标签: java

我写了一个验证信用卡的功能。它使用卡号的最后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;
}

3 个答案:

答案 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;);这肯定会解决你的问题。