此处只考虑正整数,且只使用简单运算
负整数的话判断下然后取相反数,剩下同理
// 从右往左输出
class ExtractDigits {
public static void main(String[] args)
{
int number = 123456789;
// 依次输出最后一位数字
while (number > 0) {
// 对10取模得最后一位数字
int remainder = number % 10;
// 输出最后一位数字
System.out.println(remainder);
// 移除最后一位数字
number = number / 10;
}
}
}
class ExtractDigits {
public static void main(String[] args){
printDigits(123);
}
// 首先输入num=123,num/10=12>0进入if, 并且以num=12进入第二层递归
// num=12, num/10=1>0进入if, 并且以num=1进入第三层递归
// num=1, num/10=0!>0, 跳过if输出1%10,即1,然后以返回第二层递归
// 在第二层已经执行完if语句段,num=12(进入第二次递归时的num值),输出12%10,即2,然后返回第一层递归
// 在第一层已经执行完if语句段,num=123(进入第一次递归时的num值),输出123%10,即3,递归完成
public static void printDigits(int num) {
System.out.printf("num=%d\n", num);
if(num / 10 > 0) {
System.out.printf("num/10=%d\n", num / 10);
printDigits(num / 10);
}
System.out.printf("%d ", num % 10);
}
}