这段代码有什么问题,它在必须执行时不会停止

时间:2019-03-25 08:00:14

标签: java algorithm

这是一个螺旋阶数矩阵问题,但是即使条件为真,我的代码也不会停止。

它继续运行,当dir等于0时,它应该满足while循环内的if条件,但似乎它并不在乎if语句。现在我不知道该怎么办。

    int A = 4;
    int L = 0;
    int T = 0;
    int B = A;
    int R = A;

    int h = 0;
    int dir = 0;// (d = 0 L to R) (d = 1 R to B) (d = 2 B to L ) (d = 3 L to T)

    while (T <=B && L <=R ){
        if (dir == 0){
            for (int i = L; i < R - 1; i++ ){

                h ++;
                ans.get(T).add(i);
            }
            dir ++;
            T ++;
        }
        else if (dir == 1){
            for (int i = T ; i < R; i++){
                h++;
                ans.get(i).add(h);
                R--;
                dir ++;
            }
        }
        else if (dir == 2){
            for (int i = L; i < B; i++){
                h++;
                ans.get(B-1).add(h);
            }
            dir++;
            B--;
        }
        else if (dir == 3){
            for (int i = T; i <= R; i++){

                h++;
                ans.get(i).add(h);
            }
            dir = 0;
            L++;
        }
    }

1 个答案:

答案 0 :(得分:-1)

您将dir++放在了dir==1的for循环中。如果放置正确,它将正常工作!