Java 此代码有什么问题,它没有';不要在必要的时候停下来

Java 此代码有什么问题,它没有';不要在必要的时候停下来,java,algorithm,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

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

它继续运行,当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++;
        }
    }
inta=4;
int L=0;
int T=0;
int B=A;
int R=A;
int h=0;
int dir=0;//(d=0L对R)(d=1R对B)(d=2B对L)(d=3L对T)

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

它到底要去哪里?您调试并看到了吗?L-->左冒号、T-->顶行、R-->右冒号、B-->底行和一个-->长度,您必须在该长度下执行该操作很容易开始责怪当你看不到错误时,它会自动关闭。但我可以向你保证:JVM不会忽略任何if语句。使用调试器逐步检查你的代码,并查看它的行为。如果你不知道如何操作,请学习它。这是一项基本技能。很抱歉,是的,我现在已经得到了答案,但当你已经精疲力竭地了解了if语句时,很容易责怪他人回答。我真的很抱歉。与问题本身无关,但请使用一些合理的变量名。按照惯例,Java中的变量名以小写字母开头。当涉及到
a时,您可以将变量命名为
leftColumn
rightColumn
topRow
bottomRow