谭浩强C语言(第三版)习题5.7

输出结果一样,但右边的是对的,左边是错的,错哪了呢。已经想很久了,不是负数的问题,我试过了,想不通左边为什么过不了

img

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            
            Scanner in = new Scanner(System.in);
            
            int num = in.nextInt();
            
            if (num>=0) {
                
                myPrint(num);
            
            }else {
                
                num = Math.abs(num);
                myPrint(num);
            
            }
            
            in.close();
        }
        
        public static void myPrint(int num) {
             // 取输入数值中的每一位
            int[] all = {
                    (num/10000)%10,
                    (num/1000)%10,
                    (num/100)%10,
                    (num/10)%10,
                    num%10
            };
            
            // 找到第一个数值不为0的元素的下标
            int head = 0;
            for (int i=0;i<all.length;i++) {
                if (all[head]==0) {
                    head++;
                }
            }
            // 计算并输出   输入值的位数
            System.out.println(all.length-head);
            
            // 分隔输出每位
            for (int j=head;j<all.length-1;j++) {
                System.out.print(all[j]+" ");
            }
            System.out.println(all[all.length-1]);
            
            // 倒序输出每位
            for (int j=all.length-1;j>=head;j--) {
                System.out.print(all[j]);
            }
        }
    }