求高手点拨两个“解决一个两位数乘法连续进位有关问题”的算法“所得结果不匹配”的有关问题

求高手点拨两个“解决一个两位数乘法连续进位问题”的算法“所得结果不匹配”的问题.
高手,您好:
     我是一名学习软件工程的学生,由于近日碰到了一个特大的关系重要的挑战,弟我又接到一位好朋友的“援助申请”,我粗粗看了一下这个问题,是需要占用我一定的时间的...
     弟我的时间..
     确实不够用了...
     希望能够得到高手的相助:
     下面的两个“解决两位数乘法连续进位问题”的Java语言写出的算法,为什么会有“结果不匹配”的现象?
     是什么原因造成的?
     谢谢高手!
     代码如下:
     (算法一)
     package chengfa3;

public class ChengFa {

/**
 * @param args
 */
public static void main(String[] args) {
int sum=0;
for(int i=11;i<=99;i++){
for(int j=i;j<=99;j++){
int a=j/10;
int b=j%10;
int c=i/10;
int d=i%10;
int bd=b*d;
int ad=a*d;
int bc=b*c;
int ac=a*c;
int bw=(ac%10+(ad+bc)/10);
int jw=(bd/10+(ad+bc)%10)/10;
if(bw<10&&(bw+jw)>=10){
System.out.println(""+"\t"+i+"*"+"\t"+j+"="+"\t"+(i*j));
sum++;
if(i*j%1000/100!=0){
System.out.println("错误");
}
}
}
}
System.out.println("sum="+sum);
}

}

    (算法二:)
    package chengfa2;

public class ChengFa {

/**
 * @param args
 */
public static void main(String[] args) {
int sum=0;
for (int a = 0; a < 10; a++) {
for (int b = 0; b < 10; b++) {
for (int c = 0; c < 10; c++) {
for (int d = 0; d < 10; d++) {
int ab=10*a+b;
int cd=10*c+d;
int bd=b*d;
int ad=a*d;
int bc=b*c;
int ac=a*c;
int jw=(bd/10+ad%10+bc%10)/10;
int gw=ac%10+ad/10+bc/10;
int sw=jw+gw;
if(ab>cd){
continue;
}
if(gw<10&&sw>=10){
sum++;
int ji=ab*cd;
System.out.println(""+ab+"*"+cd+"="+(ab*cd));
}
}
}
System.out.println("---------------------");
}
}
        System.out.println("sum="+sum);
}

}
    算法一的计算结果是:
     13* 77= 1001
13* 78= 1014
15* 67= 1005
15* 68= 1020