为什么会导致无限循环?

man*_*nis 0 java loops

我正在尝试编写一个方法,将在矩阵(二维数组)上使用高斯消除,我正在尝试调试我的方法,我遇到了这个问题

public int Gauss() {
    int i = 1;
    int j = 1;
    int pivotCol = 0;
    while (pivotCol == 0 && j <= cols())
        if (i == rows()){
            j ++;
            i = 1;
        }
        if (get(i,j) == 1.0){
            pivotCol = j;
        } else {
            i ++;
        }
    return pivotCol;
}
Run Code Online (Sandbox Code Playgroud)

这不是最后的方法,但由于某种原因,这个循环永远不会停止,为什么?

Ben*_*Ben 11

while (pivotCol == 0 && j <= cols()) {
...
}
Run Code Online (Sandbox Code Playgroud)

你忘了括号,所以while只用if语句,因此运行无限.


And*_*nov 7

我想问题是你的while循环没有花括号,例如它有效如下:

while (pivotCol == 0 && j <= cols()) {
  if (i == rows()){
    j++;
    i = 1;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果i != rows()这永远不会终止.