我是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)
但是对于很长的数字,它没有给出真正的工作,
如何解决它与大数字一起工作?
感谢。
答案 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;
}