Java正序倒序取出一串数字中的各个位数(两种方法)

public class TakeOutEachNumberInAStringNumbers {
    /**
     * @author JadeXu
     * @// TODO: 2020/12/2 取出一串数字中的每一个数字,正序倒序
     */

    //正序
    /**
     * 方法1 数学逻辑
     * @param num 一串数字
     */
    public static int[] getNumByPositive1(int num) {
        int length = String.valueOf(num).length();
        int[] arr = new int[length];
        long newNum = num;
        //当newNum为1位数时,直接取出(因为newNum的长度一直在变化,所以这时应该赋给num长度的最后一位)
        for (int i = 0; i < length; i++) {
            int newLength = String.valueOf(newNum).length();
            if(newLength == 1){
                arr[length-1] = (int)newNum;
                break;
            }
            //除数(两位数,除数就是10(所以循环条件是数字num的长度再减1,即length-1)
            // 以此类推,例:234,除数为100
            int divisor = 1;
            for (int j = 0; j < newLength-1; j++) {
                divisor *= 10;
            }
            //通过取除数获取各个位数
            arr[i] = (int)(newNum/divisor);
            //用剩下的余数继续取值
            newNum %= divisor;
        }
        return arr;
    }

    /**
     * 方法2 String方法
     * @param num 一串数字
     * @return 储存各个位数的数组
     */
    private static int[] getNumByPositive2(int num) {
        String str = String.valueOf(num);
        int[] arr = new int[str.length()];
        for (int i = 0; i <str.length() ; i++) {
            arr[i] = Integer.parseInt((String.valueOf(str.charAt(i))));
        }
        return arr;
    }

    //倒序
    /**
     * 方法2 数学逻辑
     * @param num 一串数字
     * @return 储存各个位数的数组
     */
    public static int[] getNumByReverse1(int num) {
        int length = String.valueOf(num).length();
        int[] arr = new int[length];
        long newNum = num;
        //当newNum为1位数时,直接取出(因为newNum的长度一直在变化,所以这时应该赋给num长度的最后一位)
        for (int i = 0; i < length; i++) {
            int newLength = String.valueOf(newNum).length();
            if(newLength == 1){
                arr[length-1] = (int)newNum;
                break;
            }
            //通过取除数获取各个位数
            arr[i] = (int)(newNum%10);
            //用剩下的余数继续取值
            newNum /= 10;
        }
        return arr;
    }

    /**
     * 方法2 String方法
     * @param num 一串数字
     * @return 储存各个位数的数组
     */
    public static int[] getNumByReverse2(int num){
        String str = String.valueOf(num);
        int[] arr = new int[str.length()];
        for (int i = str.length()-1,j = 0; i >= 0 && j < str.length() ; i--,j++) {
            arr[j] = Integer.parseInt((String.valueOf(str.charAt(i))));
        }
        return arr;
    }
}

上一篇:3.25


下一篇:Leetcode 242. 有效的字母异位