运行结果有问题,结果最后一位为0

//有序顺序表的合并
public class Test2 {
    public static void main(String[] args) {
        B len=new B();
        len.merge();
    }
}
class A{
    int elem[];
    int length;
    A(){
        elem=new int[100];
        length=0;
    }
    void display()//遍历
    {
        for(int i=0;iSystem.out.print(elem[i]+" ");
        }
        System.out.print(" ");
    }
}
class B{
    A a,b,c;//定义3个顺序表
    B(){

    }
    Scanner scanner = new Scanner(System.in);
    void merge(){
        int i=0;
        int j=0;
        A a=new A();
        System.out.println("请输入a顺序表的长度:");
        int value1=scanner.nextInt();
        a.length=value1;
        System.out.println("请输入顺序表a的"+value1+"个元素:");
        for(int x=0;x//Scanner scanner = new Scanner(System.in);
            a.elem[x]= scanner.nextInt();
        }
        a.display();
        A b=new A();
        System.out.println("请输入b顺序表的长度:");
        int value2=scanner.nextInt();
        b.length=value2;
        System.out.println("请输入顺序表b的"+value2+"个元素:");
        for(int y=0;y[y]= scanner.nextInt();
        }
        b.display();
        A c=new A();
        c.length=a.length+b.length;
        int k=0;
        while (i<=a.length&&b.length>=j){
            if(a.elem[i]>b.elem[j]){
                c.elem[k++]=b.elem[j++];
            }else{
                c.elem[k++]=a.elem[i++];
            }
        }
        while(i//a顺序表更长。将a顺序表中的元素加到c中
            c.elem[k]=a.elem[i];
            i++;
            k++;
        }
        while(j//b顺序表更长。将b顺序表中的元素加到c中
            c.elem[k]=b.elem[j];
            j++;
            k++;
        }
        c.display();
        System.out.print(" ");
  }
}

编译过程如下:
请输入a顺序表的长度:
3
请输入顺序表a的3个元素:
5
7
7
5 7 7 请输入b顺序表的长度:
2
请输入顺序表b的2个元素:
3
8
3 8 3 5 7 7 0