将每个长数除以 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;
}
我是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;
}