split int value into separate digits

后端 未结 8 1836
野的像风
野的像风 2020-11-27 18:43

I want to split my int value into digits. eg if the no. is 542, the result should be 5,4,2.

I have 2 options. 1) Convert int into String & then by using getCharA

相关标签:
8条回答
  • 2020-11-27 19:02

    You could use a Stack instead of an ArrayList if the ordering was a big issue. When popped the digits off the stack you would get them in the correct order, with the most significant digit first.

    0 讨论(0)
  • 2020-11-27 19:16

    This algorithm will split primitive "int" into single digits. It starts from the last digit up to the first one.

    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
    

    }

    0 讨论(0)
  • 2020-11-27 19:18

    divide by ten and get remainders, put them in a collection/array of your choice, keep doing this until there the quotient is zero and all you have is a remainder

    0 讨论(0)
  • 2020-11-27 19:19

    This will split the digits for you. Now put them into an array instead of printing them out and do whatever you want with the digits. If you want to add them, you could replace the System.out with something like 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)));          
        }
    }
    
    0 讨论(0)
  • 2020-11-27 19:22
    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]
    
    0 讨论(0)
  • 2020-11-27 19:22
    int digits(int i) {
        int num=0;
        while(i > 0) {
            num *= 10;
            num += i % 10;
            i /= 10;
        }
        return num;
    } 
    
    0 讨论(0)
提交回复
热议问题