将每个长数除以 java

divide every number of long number in java

我是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)

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

我如何解决它以处理大数?

谢谢。

只需将这些内容读入字符串并执行以下操作:

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

无需分割,长度任意。

如果您需要整数,只需通过以下方式进行转换:

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

首先,您需要注意如果您可以"cram"将所有数字转换为简单的整数。如果时间太长,您可能根本无法做到这一点 - 正如您现在可能已经注意到的那样。

我采用了另一种方法来解决这个问题,但它可能不是您所需要的。将数字视为字符串。

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
        }
    }
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]

将长字符串拆分为整型数组

将长字符串拆分为字符数组,然后使用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;
}