Return first digit of an integer

后端 未结 23 1803
醉梦人生
醉梦人生 2020-11-28 13:12

How in Java do you return the first digit of an integer.?

i.e.

345

Returns an int of 3.

23条回答
  •  情歌与酒
    2020-11-28 13:52

    To separate digits of an integer from left to right I use 2 different methods, the first one to count how many digits the integer is made up of and then I split them from left to right by dividing the integer by 10 raised to the power of the number of digits minus 1.

    //method to separate digits of an integer from left to right
    private static void separateDigits(int num){
        int numOfDigits = countNumberOfDigits(num);
        for (int numOfZeros = numOfDigits-1; numOfZeros >= 0 ; --numOfZeros){
            int divisor = (int) Math.pow(10, numOfZeros);
            System.out.print( Math.abs(num) / divisor + " // " );
            num %= divisor;
        }
    }
    
    //method to count number of digits
    private static int countNumberOfDigits(int num){
        int numOfDigits=0;
        //using absolute value of num allows method to work even with negative integers
        while(Math.abs(num) > 0){ 
            num = num / 10;
            numOfDigits++; //this counts the number of times the "while" loops
        }
        return numOfDigits;
    }
    

    No use of Arrays or recursive methods just simple division with "/" and "%".

    Invoking the method:

    public static void main(String args[]) {
    
    separateDigits( -123456789 );
    
    }
    

    yields: 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9 //

提交回复
热议问题