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