相互匹配,剩下的数接着匹配,求逻辑代码,不知道这应该是什么算法?

5 2
4 7
... ...
两列数字,
左边是全部数量 右边是已发货的数量,
现在右边的2先和5匹配,还剩3个没发货的,
然后5变成3,右边的7再和3匹配 ,多余出4个已发货的,
然后剩下的4再和左边的4匹配,等于的话就正好,后面依次类推, 这样的逻辑怎么写?求教大神!最好是用PLSQL语言来写,也可以用Java代码也行,拜托了!不管怎样先谢谢!

int a1 = 5;
int a2 = 2;
int b1 = 4;
int b2 = 7;

int 未发货 = a1-a2;
a1= 未发货;
int 已发货 =b2-a1;
if(b1 == 已发货){
成功
}else{
失败
}

先把查出来的值都放入一个LIst数组里面,for循环长度就是你查到的数据条数,随机数randomOne就是你查的字段1的值,randomTwo就是字段2的值。
public class Test {
public static void main(String[] args) {
List list=new ArrayList();
Integer[] ints=null;
int randomOne = 0,randomTwo=0;
for (int i = 0; i < 2; i++) {
ints=new Integer[2];
randomOne=(int)(Math.random()*5000)+1;
randomTwo=(int)(Math.random()*5000)+1;
ints[0]=randomOne;
ints[1]=randomTwo;
System.out.println(randomOne+"\t"+randomTwo);
list.add(ints);
}
printForListMap(list);
}

public static void printForListMap(List<Integer[]> list){
    int k=0;
    for (int i = 0; i < list.size(); i++) {
        Integer[] count = list.get(i);
        if(count!=null){
            k = count[1]-count[0]-k;
        }
        if(k<0){
            System.out.println("还剩"+(-1)*k+"个没发货的");
        }
        if(k>0){
            System.out.println("多余出"+k+"个已发货的");
        }
        if(k==0){
            System.out.println("刚好匹配");
        }
    }
};

}