我想将int值拆分为数字。例如,如果没有。是542,结果应该是5,4,2。
我有两个选择。 1)将int转换为String&然后通过使用getCharArray(),我可以有单独的字符&然后我会将它们转换回int值。
2)将int转换为String,而不将其转换为char数组,迭代它&得到所有数字。
还有其他方法可以解决问题。如果没有,哪个选项会很快?
答案 0 :(得分:17)
List<Integer> digits(int i) {
List<Integer> digits = new ArrayList<Integer>();
while(i > 0) {
digits.add(i % 10);
i /= 10;
}
return digits;
}
答案 1 :(得分:7)
使用mod 10规则......
List<Integer> digits = new ArrayList<Integer>();
while (n > 0) {
digits.add(n%10);
n/=10;
}
答案 2 :(得分:6)
int num = 542;
if (num<0) num=-num; // maybe you'd like to support negatives
List<Integer> digits = new LinkedList<Integer>();
while (num>0) {
digits.add(0, num%10);
num=num/10;
}
System.out.println(Arrays.toString(digits.toArray())); // [5, 4, 2]
答案 3 :(得分:2)
除以十并获得剩余部分,将它们放入您选择的集合/数组中,继续这样做,直到商为零并且您拥有的是剩余部分
答案 4 :(得分:2)
如果排序是一个大问题,您可以使用Stack而不是ArrayList。当从堆栈中弹出数字时,您将以正确的顺序获得它们,首先是最重要的数字。
答案 5 :(得分:1)
int digits(int i) {
int num=0;
while(i > 0) {
num *= 10;
num += i % 10;
i /= 10;
}
return num;
}
答案 6 :(得分:0)
这将为您分割数字。现在将它们放入一个数组而不是打印出来,并用数字做任何你想做的事情。如果您要添加它们,可以将System.out
替换为sum += z;
之类的内容。
public class Splitter {
public static int numLength(int n) {
int length;
for (length = 1; n % Math.pow(10, length) != n; length++) {}
return length;
}
public static void splitNums(double x){
double y, z, t = x;
for (int p = numLength((int)x)-1; p >= 1; p--){
y = t % Math.pow(10, (numLength((int)(t))-1));
z = ((t - y)/Math.pow(10, p));
t = t - (z * Math.pow(10, p));
System.out.println(Math.abs((int)(z)));
}
System.out.println(Math.abs((int)(t)));
}
}
答案 7 :(得分:0)
该算法将拆分原语&#34; int&#34;成个位数。它从最后一个数字开始直到第一个数字。
class IntegerSplitterDemo {
static boolean digitChoper(int num) {
for(int i = 10; i <= Integer.MAX_VALUE; i *= 10 ) {
//Starts from the last digit so it will display the int in reverse order
int remainder = (i == 10) ? num % 10 : (num % i / (i /10));
//You can store the remainder value into ArrayList
System.out.print(remainder + " ");
//stop iterating the loop
if(num % i == num) { break; }
}
System.out.println("");
return true;
}
public static void main(String[] args) {
int[] num = {0, 371, 372, 678, 432, 569, 341, 371, 567, 2569874};
for(int number : num) {
digitChoper(number);
}
} // end main
}