请问用java实现cobol 1:1 match处理怎么实现
两个list A和B同时循环
要求判断两个list同为第N件的key a1=b1时,处理继续A list的i++; B list的j++两个list继续循环
如果a1 < b1时,i++, j不变, 用a2和b1继续判断
如果a1 >b1时,i不变,j++,用a1和b2继续判断
如果A list循环完了,但是B list 还没有循环完,出log
如果A list没有循环完,但是B list已经循环完了也出log
有好的实现方式吗
不知道你说的要输出的log是什么内容,写了一种思路,不知道是不是你想要的。
public class Test {
public static void cobol(int[] A, int[] B) {
int i = 0;
int j = 0;
while (i < A.length && j < B.length) {
int tempA = A[i];
int tempB = B[j];
if (tempA == tempB) { //a1=b1时,处理继续A list的i++; B list的j++两个list继续循环
i++;
j++;
} else if (tempA < tempB) { //a1 < b1时,i++, j不变, 用a2和b1继续判断
i++;
} else { //a1 >b1时,i不变,j++,用a1和b2继续判断
j++;
}
}
if (i >= A.length) {
System.out.println("列表A循环完了,i=" + i + ",j=" + j);
} else {
System.out.println("列表B循环完了,i=" + i + ",j=" + j);
}
}
public static void main(String[] args) {
int[] A = new int[]{1, 2, 3, 4, 5};
int[] B = new int[]{6};
cobol(A, B);
}
}
输入:
int[] A = new int[]{1, 2, 3, 4, 5};
int[] B = new int[]{6};
输出:
列表A循环完了,i=5,j=0
楼上这种方式就可以实现
循环,单独定义两个list的下标,循环里面去判断list下标是否++