public void onePass(){
int tmp=0;

if((x1==x2)&&(y1>y2)){
for(tmp=y2+1;tmp<=y1;tmp++){
if(bt[x1][tmp]!=0){
break;
}
}
}
if(tmp==y1){
Remove();
} }这个函数是我程序的一部分,x1,x2,y1,y2都是整形变量,bt[][]存放对应坐标下的值,忽略程序其他条件,只看这个循环,
最后第二个if能否成立,就是能否成功调用到Remove()函数 ???

解决方案 »

  1.   

    public void onePass(){
    int tmp=0;if((x1==x2)&&(y1>y2)){
    for(tmp=y2+1;tmp<=y1;tmp++){
    if(bt[x1][tmp]!=0){
    break;
    }
    }
    }
    if(tmp==y1){
    Remove();
    } }代码这么贴
      

  2.   

    最后第二个if能否成立,就是能否成功调用到Remove()函数的!!
      

  3.   

      public void onePass() {
            int tmp = 0;
            if ((x1 == x2) && (y1 > y2)) {
                for (tmp = y2 + 1; tmp <= y1; tmp++) {
                    if (bt[x1][tmp] != 0) {
                        break;
                    }
                }
            }
            if (tmp == y1) {
                Remove();
            }
        }
    这样好看点
      

  4.   

    第一次发帖,不晓得还有格式个体,呵呵!就是看那个函数最后能否调用到Remove()函数
      

  5.   

    如果整个循环做完的话,tmp=y1+1;Remove()函数做不到
    不过如果在tmp=y1的时候break的话,应该能做到
      

  6.   

    当然可以啊··但是要到最后一轮循环的时候才能哦··因为最后一轮循环才能满足你的条件·即tmp==y1
      

  7.   

    tmp=y1的时候显然符合循环条件,tmp还会继续加的,所以是倒数第二轮要 break;
      

  8.   

    那将第二个循环的条件改成tmp==y1+1呢?能否调用?
      

  9.   

    你调试一下,或者写几个println(),跟踪一下程序执行的过程,找找问题在哪里?我们光看也看不明白
      

  10.   

    tmp==(y1+1)是这么写的么?
      

  11.   

    是的,我这个函数就是想扫描bt[x1][y1]到bt[x2][y2]之间是否是全0,如果是的话就调用Remove()方法
    条件是tmp==(y1+1)这样写的没错 我跟踪调试一下吧 呵呵 谢谢你啊