PTA 1010 一元多项式求导 有前两个测试点错误

我的代码前面两个测试节点发生错误,然后我就去网上看了下,发现了一个可以通过的代码,然后可以全部通过问题,但是我看不出来两者之间有什么区别,请各位指教
public class B1010 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] s1 = s.split(" ");
        int[] number = new int[s1.length];
        for (int i = 0; i < s1.length; i++) {
            number[i] = Integer.parseInt(s1[i]);
        }
        int flag = 0;
        for (int i = 0; i < s1.length; i += 2) {
            if (number[i + 1] != 0) {
                if (flag == 0) {
                    System.out.print(number[i] * number[i + 1]);
                } else {
                    System.out.print(" " + (number[i] * number[i + 1]));
                }
                System.out.print(" " + (number[i + 1] - 1));
                flag = 1;
            }
        }
        if (flag == 0) {
            System.out.print("0 0");
        }
    }
}
public class Test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int flag = 0;
        // 用于判断是否完成所有数据

        // 使用Scanner类中的hsaNext() 方法来处理输入
        while (in.hasNext()) {
            int x = in.nextInt();
            // x为系数
            int n = in.nextInt();
            // n为指数
            if (n != 0) {
                if (flag == 0) {
                    System.out.print(x * n);
                    // 输出求导后的系数
                } else {
                    System.out.print(" " + x * n);
                    // 加上空格
                }
                System.out.print(" " + (n - 1));
                // 输出求导后的指数
                flag = 1;
                // 处理结束
            }
        }

        // 处理特殊情况
        if (flag == 0) {
            System.out.print("0 0");
        }
    }
}

前面的是我的代码,是不可以通过测试的,后面的是正确的代码

请帮我找一下问题所在