dividir el valor int en dígitos separados

Quiero dividir mi valor int en dígitos. por ejemplo, si el no. es 542, el resultado debería ser 5,4,2.

Tengo 2 opciones. 1) Convierta int en String y luego usando getCharArray (), puedo tener caracteres separados y luego los convertiré nuevamente en valores int.

2) Convierta int en String, sin convertirlo en una matriz de caracteres, itere y obtenga todos los dígitos.

¿Hay alguna otra forma de resolver el problema? Si no, ¿cuál de las opciones será rápida?

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

Usa la regla mod 10 …

  List digits = new ArrayList(); 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 digits = new LinkedList(); while (num>0) { digits.add(0, num%10); num=num/10; } System.out.println(Arrays.toString(digits.toArray())); // [5, 4, 2] 

Divida entre diez y obtenga los rests, colóquelos en una colección / matriz de su elección, siga haciendo esto hasta que el cociente sea cero y todo lo que tenga es un rest

Podría usar una stack en lugar de una lista de arreglos si el orden era un gran problema. Cuando saca los dígitos de la stack, los obtendría en el orden correcto, primero con el dígito más significativo.

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

Esto dividirá los dígitos para ti. Ahora colóquelos en una matriz en lugar de imprimirlos y haga lo que quiera con los dígitos. Si desea agregarlos, puede reemplazar System.out con algo como 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))); } } 

Este algoritmo dividirá la primitiva “int” en un solo dígito. Comienza desde el último dígito hasta el primero.

clase 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 

}