How to convert an array of digits to a number in Java

1 Answer

0 votes
import java.util.Arrays;

public class DigitsToNumber {

    // ------------------------------------------------------------
    // method 1: join digits as strings
    // Example: [1,2,3,4] → "1234" → 1234
    // ------------------------------------------------------------
    static int digitsToNumberJoin(int[] digits) {
        StringBuilder sb = new StringBuilder();
        
        for (int d : digits) {
            sb.append(d);
        }
        
        return Integer.parseInt(sb.toString());
    }

    // ------------------------------------------------------------
    // method 2: mathematical folding (no strings)
    // Example: [1,2,3,4] → (((1*10)+2)*10+3)*10+4
    // ------------------------------------------------------------
    static int digitsToNumberMath(int[] digits) {
        int n = 0;
        
        for (int d : digits) {
            n = n * 10 + d;
        }
        
        return n;
    }

    // ------------------------------------------------------------
    // method 3: using streams (Java 8+)
    // ------------------------------------------------------------
    static int digitsToNumberStream(int[] digits) {
        String s = Arrays.stream(digits)
                         .mapToObj(String::valueOf)
                         .reduce("", (a, b) -> a + b);
                         
        return Integer.parseInt(s);
    }

    // ------------------------------------------------------------
    // main
    // ------------------------------------------------------------
    public static void main(String[] args) {
        int[] digits = {4, 6, 3, 9, 1, 2};

        System.out.println("Using join():   " + digitsToNumberJoin(digits));
        System.out.println("Using math():   " + digitsToNumberMath(digits));
        System.out.println("Using stream(): " + digitsToNumberStream(digits));
    }
}


/*
run:

Using join():   463912
Using math():   463912
Using stream(): 463912

*/

 



answered Mar 20, 2016 by avibootz
edited May 11 by avibootz
...