将int值分成不同的数字

我想将我的int值分成数字。 如果没有。 是542,结果应该是5,4,2。

我有2个选项。 1)将int转换为string&然后通过使用getCharArray(),我可以有单独的字符,然后我将它们转换回int值。

2)将int转换为String,而不将其转换为char数组,将其迭代并获取所有数字。

还有别的办法可以解决这个问题吗? 如果不是,哪个选项会很快?

List<Integer> digits(int i) { List<Integer> digits = new ArrayList<Integer>(); while(i > 0) { digits.add(i % 10); i /= 10; } return digits; } 

使用mod 10规则…

  List<Integer> digits = new ArrayList<Integer>(); while (n > 0) { digits.add(n%10); n/=10; } 
 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] 

除以10得到余数,把它们放在你select的集合/数组中,继续这样做,直到商数为零,并且只剩下余数

如果sorting是一个大问题,你可以使用堆栈而不是ArrayList。 当从堆叠中popup数字时,您将按照正确的顺序得到它们,最重要的数字在前。

 int digits(int i) { int num=0; while(i > 0) { num *= 10; num += i % 10; i /= 10; } return num; } 

这将为您分割数字。 现在把它们放到一个数组中,而不是将它们打印出来,然后用数字做任何你想要的。 如果你想添加它们,你可以用类似sum += z;东西replaceSystem.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))); } } 

这个algorithm将原始的“int”分成单个数字。 它从最后一位开始到第一位。

类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 

}