在java中划分每个长数的数字

时间:2015-06-25 19:47:59

标签: java android algorithm numbers

我是android开发的新手,我有一个简单的问题。

想象一下,我有一个很长的号码,比如166516516516516515。

我希望将输出分成如下: 1,6,6,5,1,6,5,1,6,5,1,6,5,1,6,5,...

我的意思是我希望每一个都有输出。

我写了这个算法:

int temp = 2536;
ArrayList<Integer> array = new ArrayList<Integer>();
do {
    array.add(temp % 10);
    temp /= 10;
}
while (temp > 0);
for (int i = 0; i < array.size(); i++) {
    Log.i("LOG", "Dynamic Numbers Array Index #" + i + " = " + array.get(i));
}

适用于小数字(int)

但是对于很长的数字,它没有给出真正的工作,

如何解决它与大数字一起工作?

感谢。

4 个答案:

答案 0 :(得分:4)

只需将这些内容读入字符串即可:

for(char c : str.toCharArray()){}

无需分割任何东西,你可以有任意长度。

如果您需要通过执行以下操作进行转换:

int i = (int)(c - '0');

答案 1 :(得分:2)

首先,你需要注意如果你可以&#34; cram&#34;你的所有数字都变成了简单的int如果时间太久你根本无法做到这一点 - 你现在可能已经注意到了。

我采用了另一种解决方案,但可能并不完全符合您的需求。将数字视为字符串。

String temp = "166516516516516515";
breakUp(temp);

private static void breakUp(String string){
        int length = string.length();

        for (int i = 0; i < length; i++) {
            String temp = string.substring(i, i+1);
            int tempInt = Integer.valueOf(temp);
            System.out.print(tempInt + " - "); //or whatever here, you can make function return list instead of void
        }
    }

答案 2 :(得分:1)

import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

public class Callone {


    public static void main(String[] args)
    {
        BigInteger i = new BigInteger("166516516516516515");
        List<Integer> list = new ArrayList<Integer>();
        BigInteger ten = new BigInteger("10");
        while (!i.equals(BigInteger.ZERO))
        {
            list.add(0, i.mod(ten).intValue());
            i = i.divide(ten);
        }

        System.out.println(list.toString());


    }
}

输出:[1,6,6,5,1,6,5,1,6,5,1,6,5,1,6,5,1,5]

答案 3 :(得分:0)

将longString拆分为intArray

将longString拆分为char数组,然后使用Character.digit获取数字值。

public static int[] splitLong(String longStr) {

    int i = 0;
    int[] nums = new int[longStr.length()];     

    for (char l : longStr.toCharArray())
        nums[i++] = Character.digit(l, 10);     

    return nums;
}

其他方法:

public static int[] splitLongNum(String longStr) {

    int len = longStr.length();
    int[] nums = new int[len];
    for (int j = 0; j < len; j++)
        nums[j] = Character.digit(longStr.charAt(j), 10);
    return nums;
}