Java念整数的题,究竟哪里出错了

题目如下:

img

代码如下,只能读出第一位数字,不知道哪里出错了

Scanner in = new Scanner(System.in);
        int x=in.nextInt();
        
//        判断整数x是否在指定范围内
        if(x>-100000 && x<100000)
        {
//            如果是负数,先输出fu,然后转换为正数,方便运算
            if(x<0)
            {
                System.out.print("fu ");
                x=(-1)*x;
            }
//            计算整数的mode
            int mode=1;
            int t=x;
            while(t>9)
            {
                mode=mode*10;
                t=t/10;
            }
//            先计算整数的位数n,然后用mode正序分解出整数各个位数,并读出数字
            int n=Integer.toString(x).length();
            for(int i=0;i<n;i++);
            {
                int digit = x/mode;
                switch(digit)
                {
                case 1:
                    System.out.print("yi ");
                    break;
                case 2:
                    System.out.print("er ");
                    break;
                case 3:
                    System.out.print("san ");
                    break;
                case 4:
                    System.out.print("si ");
                    break;
                case 5:
                    System.out.print("wu ");
                    break;
                case 6:
                    System.out.print("liu ");
                    break;
                case 7:
                    System.out.print("qi ");
                    break;
                case 8:
                    System.out.print("ba ");
                    break;
                case 9:
                    System.out.print("jiu ");
                    break;
                case 0:
                    System.out.print("ling ");
                    break;
                }
                x=x%mode;
                mode=mode/10;
            }
        }
        else
        {
            System.out.println("输入有误,请重新输入");
        }
        in.close();

public static void main(String[] args) {
    String[] numStr = {"gnil", "iy", "re", "nas", "is", "uw", "uil", "iq", "ab", "uij"};
    System.out.print("输入一个整数:");
    Scanner scanner = new Scanner(System.in);
    int num = scanner.nextInt();
    if (num < -100000 || num > 100000) {
        System.out.println("输入错误");
        return;
    }
    StringBuilder stringBuilder = new StringBuilder();
    int numAbs = Math.abs(num);
    while(numAbs >= 1) {
        stringBuilder.append(numStr[numAbs % 10]).append(" ");
        numAbs = numAbs / 10;
    }
    if (num < 0) {
        stringBuilder.append("uf");
    }
    System.out.println(stringBuilder.reverse().toString());
}