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