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;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM