遇到几个题都需要得到一个整数的各位数字,现记录一下,有3种解法:1.末位取余法,2.整除法,3.转字符串法。
创建了3个方法,均传入一个整型数,返回存有各位数字的数组。方法名分别为:getDigits1,getDigits2,getDigits3,分别对应3种解法。
方法1:末位取余法
请看下图中的计算过程,将该数不断除以10,得到的商继续除以10,直到商为0,每次除法得到的余数,顺序反过来,就是每位数字。
//末位取余法
//不断除以10,得到的商继续除以10,直到商为0,每次除法得到的余数,顺序反过来,就是每位数字
public static int[] getDigits1(int num) {
//取绝对值
num = Math.abs(num);
//得到该数的位数
int length = (num+"").length();
//创建数组,存放各位数字
int[] digits = new int[length];
//数有多长,就会做几次除法
for (int i=0;i<length;i++) {
//商
int quotient = num/10;
//余数
int remainder = num%10;
digits[length-1-i] = remainder;
//商作为下次除法的被除数
num = quotient;
}
return digits;
}
这样效率要高一些,不先将其转为String得出其长度,而是用商不为0作为循