如何用Java循环实现数字逐位正序竖直打印?
问题原因
你当前的代码通过num % 10每次拿到的是数字的最低位,所以会从个位开始倒序输出,不符合正序要求。
解决方案1:递归实现(代码简洁)
递归会先向下遍历到最高位,再逐层回溯打印,刚好实现正序输出:
public static void verticalLoop(int num) { // 递归终止条件:不足两位时直接打印当前位 if (num < 10) { System.out.println(num); return; } // 优先处理高位部分 verticalLoop(num / 10); // 再打印当前位 System.out.println(num % 10); }
解决方案2:循环实现(避免大数递归栈溢出)
如果输入的数字位数极多,递归可能导致栈溢出,可以用循环先计算位数,再从最高位开始逐位打印:
public static void verticalLoop(int num) { // 先计算最高位对应的除数 int divisor = 1; int temp = num; while (temp >= 10) { divisor *= 10; temp /= 10; } // 从最高位开始逐位打印 while (divisor > 0) { System.out.println(num / divisor); num = num % divisor; divisor /= 10; } }
内容的提问来源于stack exchange,提问作者Tyler Worley
相关产品推荐
相关产品推荐

